我在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
中尝试过,它似乎没有遇到这个问题
答案 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=long
和select=long-list
。