我正在使用 zsh。这是一个很好的外壳,特别是对于自动完成功能。但是,当我按 Tab 键时,它总是自动填充第一个完成选项。例如,我的文件夹中有两个文件。
Mydata.txt
YourData.txt
Run Code Online (Sandbox Code Playgroud)
如果我输入vim一个空格,然后按tab,它会自动填充Mydata.txt而不是仅仅列出它们并等待我的输入。我不喜欢一直按 Tab 键来选择文件。按一些字母更容易。
我试图修改 .zshrc 并设置
unsetopt MENU_COMPLETE
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用。
谁能给我一些提示?
作参考,并因为我不能完全肯定,怎样bash的行为完全,我从引用用户引导到Z-外壳由彼得·斯蒂芬森,目前维护者zsh。
6.2.1 不明确的完成
最大的一组选项处理当完成不明确时会发生什么,换句话说,有多个可能的完成。七个相关选项如下,复制自FAQ;许多不同的组合是可能的:
- 与NO_BEEP集,那恼人的蜂鸣声消失了,
- 使用NO_LIST_BEEP,只有在不明确的完成时才会关闭蜂鸣声,
- 与AUTO_LIST集,当完成是模糊的,你得到一个列表,而不必键入
CTRL+D,- 与BASH_AUTO_LIST设置列表中只发生了,你打一个模棱两可的完成选项卡中的第二次,
- 使用LIST_AMBIGUOUS进行修改,以便在插入明确的前缀或后缀时不会列出任何内容 - 这可以与BASH_AUTO_LIST结合使用 ,以便在两者都适用的情况下,您需要点击 tab 3 次以获取列表,
- 使用REC_EXACT,如果命令行上的字符串与其中一个可能的完成完全匹配,则接受它,即使还有另一个完成(即添加了其他内容的字符串)也匹配,
- 与MENU_COMPLETE设定一个完成总是完全插入,然后当你打
TAB它的变化到下一个,依此类推,直到你回到你开始的地方,- 使用AUTO_MENU,当您在模棱两可的完成时再次点击 TAB 时,您只会获得菜单行为。
您可能想使用(但正如我所说,我不确定,请随时纠正我)
setopt BEEP NO_AUTOLIST BASH_AUTOLIST NO_MENUCOMPLETE
Run Code Online (Sandbox Code Playgroud)
其中setopt NO_OPTION相当于unset OPTION.
我自己找到了答案。如果我设置
zstyle ':completion: : :*:default' 菜单无选择
然后我可以输入字符来选择自动完成选项。不过,我无法按列表进行选择。