如何像 bash 一样完成 zsh

HXG*_*Guo 4 linux zsh shell

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

但是,它不起作用。

谁能给我一些提示?

mpy*_*mpy 7

作参考,并因为我不能完全肯定,怎样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.

  • 1:我认为应该说“NO_MENU_COMPLETE”(注意缺少下划线)。 2:这个选项实际上对我没有帮助,我不得不设置“NO_AUTO_MENU”。 (3认同)
  • @CamJackson:1.下划线无关紧要,“MENU_COMPLETE”、“MENUCOMPLETE”以及“MENUCOMP_LETE”的工作原理完全相同。 2. 感谢您发布“NO_AUTO_MENU”的体验。 (2认同)

HXG*_*Guo 6

我自己找到了答案。如果我设置

zstyle ':completion: : :*:default' 菜单无选择

然后我可以输入字符来选择自动完成选项。不过,我无法按列表进行选择。