zsh自动完成菜单的TAB数量不一致

时间:2014-06-04 14:07:02

标签: shell zsh

我在zsh中注意到以下行为:
假设我有3个文件夹,我想cd进入:test1/ test2/ test3/
如果我按:

% cd t<TAB>

zsh自动填充最多test,但不显示自动完成菜单。它需要另外<TAB>才能显示出来。但是,如果我在那里放了另一个文件夹:

% mkdir tx
% cd t<TAB>

我明白了:

% cd t
test1/  test2/  test3/  tx/

如何将其配置为一致(在第一个TAB后获取自动完成菜单)?我尝试设置menu_complete选项,但这也填写了第一场比赛,这不是我喜欢的。

编辑:刚刚在bash中尝试过,它似乎没有遇到这个问题

2 个答案:

答案 0 :(得分:2)

我认为这是一种正常的行为,在第一种情况下,“t”不是名称“test1”,“test2”,“test3”中相等的最大序列:它是“测试”因此它完成直到你得到“测试”,然后你得到菜单。在第二种情况下,“t”是最大序列,因此zsh为您提供自动完成菜单。

如果您想直接访问菜单而不是让可能匹配的所有剩余字符共享,您可以使用zsh setopt menucomplete:

在“cd”尝试中,我只写了一次并点击了一次选项卡:

% ls
testA  testB  testC  tr 
% cd test
% setopt menucomplete
% cd t
testA/  testB/  testC/  tr/
% rmdir tr
% cd testA/
testA/  testB/  testC/

答案 1 :(得分:0)

要始终拥有完成cd命令的菜单,请使用:

zstyle ':completion:*:*:cd:*' menu yes select

select关键字是关键字,来自手册如果值包含字符串`select&#39;,菜单选择将无条件启动。有关配置此呼叫的更多方法,请查看zsh手册。比如使用

zstyle ':completion:*:*:cd:*' menu yes select=4

这意味着如果至少有4个不同的匹配,则强制菜单。请注意,还有select=longselect=long-list