tcsh自动完成并获取另一个自动完成的模式

时间:2013-12-22 13:42:26

标签: perl autocomplete csh tcsh

到目前为止是否可以通过tc shell完成匹配模式?

我的意思是,假设命令A,并执行:

A[TAB]
c1
c2
c3

A 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] / C3-B2 [TAB] / C3-XDR

我目前正在尝试将Term::ReadLine::Gnu Perl 一起使用。

,不,我不能使用Bash

1 个答案:

答案 0 :(得分: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-parsing脚本的输出:

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