我正在使用 zsh。这是一个不错的 shell,尤其是自动完成功能。但是,当我按 tab 时,它总是自动填充第一个完成选项。例如,我的文件夹中有两个文件。
Mydata.txt
YourData.txt
如果我输入vim
一个空白,然后按tab,它会自动填充,Mydata.txt
而不是只列出它们并等待我的输入。我不喜欢一直按 Tab 键来选择文件。按一些字母更容易。
我尝试修改 .zshrc 并设置
unsetopt MENU_COMPLETE
但是,它不起作用。
有人可以给我一些提示吗?
答案1
作为参考,由于我不完全确定bash
具体是如何表现的,我引用了Z-Shell 用户指南由 的当前维护者 Peter Stephenson 编写zsh
。
6.2.1 模糊补全
最大的选项组处理完成不明确时会发生什么,换句话说,有多种可能的完成。七个相关选项如下,摘自常见问题解答;可能有许多不同的组合:
- 和无蜂鸣声设置后,恼人的哔哔声就会消失,
- 和无列表蜂鸣声,仅当提示音不明确时才会关闭蜂鸣声,
- 和自动列表设置,当完成不明确时,您可以获得一个列表而无需输入
CTRL+D
,- 和BASH_AUTO_LIST设置,列表仅在您第二次按下模棱两可的完成按钮时发生,
- 和列表_不明确,这被修改,以便如果要插入明确的前缀或后缀,则不会列出任何内容 - 这可以与 BASH_AUTO_LIST,因此当两者都适用时,您需要点击三次 Tab 键才能列出列表,
- 和记录精确如果命令行上的字符串与其中一个可能的补全完全匹配,则该字符串会被接受,即使还有另一个补全(即添加了其他内容的字符串)也匹配,
- 和菜单完成设置后,一个完成总是会完全插入,然后当你点击
TAB
它时会切换到下一个,依此类推,直到你回到你开始的地方,- 和自动菜单,只有在模糊补全时再次按 TAB 键时,才会出现菜单行为。
您可能想要使用(但正如我所说,我不确定,请随时纠正我)
setopt BEEP NO_AUTOLIST BASH_AUTOLIST NO_MENUCOMPLETE
其中setopt NO_OPTION
相当于unset OPTION
。
答案2
我自己找到了答案。如果我设置
zstyle':完成:::*:默认'菜单无选择
然后我可以输入字符来选择自动完成选项。但是,我无法通过列表进行选择。
答案3
我用
setopt autolist
这样能达到你想要的效果吗?