Articles of 自动完成

在Bash脚本中find基于文件名的自动完成

有一个我一直想要的命令行function,我想过如何最好地实现它,但我什么都没有… 所以我想要的是当我开始input一个文件名并点击标签,例如: # git add Foo<tab> 我想要它运行一个find . -name "*$1*" find . -name "*$1*"并基本自动完成匹配的文件到我的命令行的完整path。 我到目前为止: 我知道我将不得不编写一个函数,用我想要的参数调用应用程序,例如git add 。 之后,它需要捕捉tab-keystroke事件并执行上面提到的查找,并显示结果如果多,或者填写结果(如果有)。 我无法弄清楚的是: 如何捕捉函数内的一个函数内的Tab键事件。 所以基本上是伪代码: gadd() {git add autocomplete_file_search($1)} autocomplete_file_search(keyword) { if( tab-key-pressed ){ files = find . -name "*$1*"; if( filecount > 1 ) { show list; } if( files == 1 ) { return files } […]

如何覆盖现有的zsh键盘完成?

我想启用zsh自动完成模块yast2(一个OpenSuSE控制面板),但它似乎已经有一些定义的东西。 我可以跑 compctl -k "(hello world)" nonexistantprogram 很好,但是 compctl -k "(hello world)" yast2 根本不起作用。 yast2的一些东西似乎已经被定义,即“ – ”选项: – 全屏, – 几何, – 列表[子模块]等 即使对于那些不使用OpenSuSE的人: 是否有任何标志可以压缩以覆盖以前的设置 ? 首先十分感谢。

如何在单独的进程中运行一个shell并获得自动完成? (python)

我有一个Linux应用程序,从一些设备获取inputstream。 这个input应该被引导到一个shell进程,以便它模拟给用户一个标准的shell。 到目前为止,我已经通过创build运行'/ bin / sh'的进程来完成它,并且我redirect了其input,输出和stderr,如下所示: import subprocess p = subprocess.Popen(shell=False, args=['/bin/sh'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) _make_nonblocking(p.stdout) # sets O_NONBLOCK _make_nonblocking(p.stderr) 当我只是一个通行命令,一切正常。 p.stdin.write('pwd\n') p.stdout.read() '/home/dave\n' 对于自动完成,我试图写: p.stdin.write('ls s\t') p.stdout.read() IOError: [Errno 11] Resource temporarily unavailable 我希望得到一个可能的完成列表,但没有任何反应,直到我把“\ N”在标准input。 (另外,stderr没有什么等待)。 我已经查看了telnetd代码,并看到使用pty。 我尝试使用pty.openpty()并将slave设置为stdin,但是这也不起作用。 应该怎么办? 更新:我用build议的-i参数。 现在我有一个问题,一旦我使用Popen,然后按ENTER键,python shell移动到后台,如下所示: >>> p = subprocess.Popen(shell=False, args=['/bin/sh', '-i'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) >>> <ENTER> [1]+ […]

Git别名 – 命令行自动完成分支名称

如果我运行一个常规的git命令(如git checkout ,当点击tab键时,会获得有用的分支名称自动完成。 我有一些以分支名称作为参数的git别名,我想知道是否有办法让分支名称自动完成与他们一起工作? 编辑: 只是从评论的讨论中提供一些澄清,直接映射的别名工作正常,即: ci = commit co = checkout 这是一个更多的参与,并使用$1作为参数不,例如: tagarchive = !f() { git tag archive/$1 origin/$1 && git push origin :$1 && git push origin archive/$1 && git branch -d $1; }; f

如何使用文件path自动完成bash命令行?

上下文 我正在创build一个命令行工具的shell程序。 我想创build我自己的自动完成这个工具。 我想做两件不同的事情(也许我应该提出两个问题): 对于选项–install和-i ,我想在文件path上自动完成,就像ls命令一样。 对于选项–unit-test和-t ,我想从一个特定的目录中自动完成文件path,我可以运行my_app –directory 。 my_app_autocomplete文件 __my_app_autocomplete() { local cur prev opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" opts="–help -h –install -i –run -r –rebuild -rb –show-running-containers -ps –stop -s –remove -rm –logs -l –bash -b –sass -css –unit-tests -t" containers="nginx php mysql mongo node" sass="watch" # By default, autocomplete with options if […]

如何做python命令行自动完成,但不只是在一个string的开始

Python,通过它的readline绑定允许很好的命令行自动完成(如这里所述 )。 但是,完成似乎只是在string的开始工作。 如果要匹配stringreadline的中间或末尾不起作用。 我想自动完成string,在命令行python程序通过匹配我键入任何可用string列表中的string。 自动完成types的一个很好的例子是,当你inputTo字段时,在GMail中会发生这种types。 如果你input一个联系人的姓氏,就会像input她的名字一样出现。 一些使用上下箭头或其他方法从匹配的string中select可能是需要的(在readline的情况下不需要),这在我的情况是好的。 我特别的用例是一个发送邮件的命令行程序。 具体的代码示例将非常有帮助。 使用像curses这样的terminal模拟器会很好。 它只需要在Linux上运行,而不是在Mac或Windows上运行。 这里是一个例子:假设我在列表中有以下三个string ['Paul Eden <paul@domain.com>', 'Eden Jones <ejones@domain.com>', 'Somebody Else <somebody@domain.com>'] 我想要一些代码,它会自动填充列表中的前两项,然后让我select其中的一个(全部通过命令行使用键盘)。

如何使python,命令行程序自动完成任意东西而不是解释器

我知道如何设置python解释器(在UNIX上)python对象的自动完成。 谷歌显示了很多关于如何做到这一点的解释。 不幸的是,有这么多的参考文献,很难find我需要做的,这是略有不同的。 我需要知道如何启用,在用python编写的命令行程序中的任意项目的选项卡/自动完成。 我的具体用例是一个需要发送电子邮件的命令行python程序。 我希望能够自动完成电子邮件地址(我有磁盘上的地址),当用户键入它的一部分(和可选地按下TAB键)。 我不需要它在Windows或Mac上工作,只是Linux。