Shell zsh自动完成菜单的选项卡数不一致

Shell zsh自动完成菜单的选项卡数不一致,shell,zsh,Shell,Zsh,我注意到zsh中有以下行为: 假设我有3个文件夹要放入cd中:test1/test2/test3/ 如果我按下: % cd t<TAB> 我得到: % cd t test1/ test2/ test3/ tx/ 如何将其配置为一致(在第一个选项卡后获取自动完成菜单)?我尝试设置菜单\u complete选项,但这也会填充第一个匹配项,这不是我喜欢的 编辑:刚刚在bash中尝试过,它似乎没有遇到这个问题我认为这是一个正常的行为,在第一种情况下,“t”不是名称“test1”、“

我注意到zsh中有以下行为:
假设我有3个文件夹要放入
cd
中:
test1/test2/test3/

如果我按下:

% cd t<TAB>
我得到:

% cd t
test1/  test2/  test3/  tx/
如何将其配置为一致(在第一个选项卡后获取自动完成菜单)?我尝试设置
菜单\u complete
选项,但这也会填充第一个匹配项,这不是我喜欢的


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

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

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

在任何一次“cd”尝试中,我都只写入t并点击tab一次:

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

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

zstyle ':completion:*:*:cd:*' menu yes select
select
关键字是手册中的关键字,如果该值包含字符串“select”,则将无条件启动菜单选择。查看zsh手册以了解配置此调用的更多方法。例如使用

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

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

是否有一个选项可以将命令行中的单词扩展到最长的通用前缀,并在一次击键中显示菜单?如果您只有testA testB和testC,并且设置了menucomplete选项,@Peeja说了什么(这基本上是我的问题),然后,它将完成“t”到“testA”(如果再次点击tab,则完成testB和testC)。我不知道是否有一个机制可以完成“测试”,但这有什么意义呢?无论如何,你必须从三个选项中选择一个。不幸的是,这仍然会自动填充第一个匹配项。我的理解是,你的问题的措辞可能会更好,你想要的是一个“列表”。Zsh中的“菜单”将始终填充值。很可能您需要使用强制列表(?)。是的,对不起,我对术语不太熟悉,我只是不想在只需要一个选项卡的情况下按下两个选项卡,而且我不希望自动完成第一个匹配。试试我在bash中的例子,你就会明白我的意思。
zstyle ':completion:*:*:cd:*' menu yes select=4