如何让 zsh 像 bash 一样完成

如何让 zsh 像 bash 一样完成

我正在使用 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

这样能达到你想要的效果吗?

相关内容