2013-12-22 2 views
1

Можно ли получить шаблон соответствия до сих пор с полным расширением tc?tcsh auto-complete и получение шаблона для другого автоколлектора

То, что я имею в виду, принимая команду A, и выполнить:

A[TAB] 
c1 
c2 
c3 

< c3[TAB] - здесь я хочу закончить, чтобы выполнить команду с подходящим шаблоном до сих пор: c3 ....

Обновление: В основном я пытаюсь выполнить автозаполнение из XML.

<xml> 
     <key name="c1"></key> 
     <key name="c2"></key> 
     <key name="c3"> 
     <key name="c3-b2"> 
      <key name="c3-xdr"></key> 
     </key> 
     </key> 
</xml> 

так в основном я хотел бы иметь возможность автозаполнения, как: c3 [TAB]/с3-b2 [TAB]/с3 XDR

В настоящее время я пытаюсь использовать Term::ReadLine::Gnu с Perl.

и нет, я не могу использовать Bash

+0

вы можете объяснить, что вы хотите его использовать? – shx2

+0

@ shx2 конечно, я хотел бы автозаполнять файл XML с определенным форматом. – snoofkin

+0

Можете ли вы привести конкретный пример? что находится в xml? – shx2

ответ

0

Вот как я бы об этом. Во-первых, я бы использовал простой скрипт xml-parsing для печати путей. Вот один я придумал (вы можете легко написать один из ваших собственных с помощью Perl, или просто использовать этот):

# xml_paths.py 
import sys 
from xml import sax 

class PathHandler(sax.handler.ContentHandler): 
    def __init__(self): 
     self.path = [] 
    def startElement(self, name, attrs): 
     if name == 'key': 
      self.path.append(attrs['name']) 
      print '/'.join(self.path) 
    def endElement(self, name): 
     if name == 'key': 
      self.path.pop() 

sax.parse(sys.argv[1], PathHandler()) 

Наконец, complete это (вы должны использовать абсолютные пути к сценарию и файл XML) :

% complete A 'p#*#`python xml_paths.py a.xml`#' 
% A <TAB> 
c1    c2    c3    c3/c3-b2  c3/c3-b2/c3-xdr 
% A c3/<TAB> 
c3/c3-b2  c3/c3-b2/c3-xdr 
% A c3/c3-b2 

для ясности, это выход из XML-синтаксического анализа сценария:

% python xml_paths.py a.xml 
c1 
c2 
c3 
c3/c3-b2 
c3/c3-b2/c3-xdr 

 Смежные вопросы

  • Нет связанных вопросов^_^