我有一个命令xssh
,它是原始ssh
命令的包装器。我需要为此命令执行Zsh完成,并且完成规则与zsh
完全相同。所以我将以下内容添加到_xssh
文件
#compdef xssh
compdef xssh=ssh
我可以加载命令的完成,但问题是,如果它是第一次在终端中使用xssh
命令并键入<TAB>
,我必须键入<TAB>
两次,以便完成可以开始工作。例如,我必须输入xssh ho<TAB><TAB>
才能获得xssh hostname
。但在此之后,我只需输入xssh ho<TAB>
即可获得xssh hostname
(hostname
在我的.ssh/config
文件中是唯一的。所以你知道如何解决这个问题吗?
如果我从头开始编写完成,就像我为其他命令所做的那样
,这种情况不会发生答案 0 :(得分:0)
我有同样的问题。
我的_gd
中有一个名为fpath
的完成文件 ,如下所示:
#compdef gd
function _gd {
... my code ...
_describe gd list
}
我第一次启动外壳时,需要按两次Tab键才能工作,然后再按一次。
要解决此问题,我要做的就是删除function {}
部分,所以现在看起来就像
#compdef gd
...mycode...
_describe gd list