如何使zsh补全像Bash补全一样?


12

我切换到zsh,但是我不喜欢它的完成。如果我有20个文件,每个文件都有一个共享的前缀,那么在按Tab键时,zsh将完全完成第一个文件,然后在每次按Tab键时继续浏览列表。如果要在结尾处输入一个,则必须多次按Tab键。

在bash中,这很简单-按下tab键,我会得到前缀。如果我继续键入(并按Tab键),bash将尽可能完成。我发现这种行为更加直观,但是喜欢bsh的zsh其他功能。

有没有办法获得这种完成风格?Google建议setopt bash_autolist,但这对我没有影响(启动我的shell时没有打印错误消息)。

谢谢。

Answers:



8

您想要的可能是这样的:

setopt noautomenu

1
(10年后)接受的答案对我没有任何影响。这正是我想要的,而OP似乎在要求什么。

1

如果在.zshrc中使用“菜单选择”选项,则还有另一个选项:

autoload -U compinit
compinit
zstyle ':completion:*:*:*:*:*' menu select

您将能够使用箭头键浏览结果。让我们以“带有共享前缀的20个文件”为例:

  • 第一次点击[TAB]时,zsh将完成更多操作,然后显示可能性列表
  • 那么您可以像使用bash一样完成操作(键入一个额外的字符,转到0)
  • 或重新输入[TAB],然后您会在shell提示下方的菜单中看到突出显示的可能选项;奖金,您可以使用箭头键浏览各种可能性

最终达到最后的可能性:

  • 使用Bash充其量,您先打[TAB],再打一个额外的字符,然后再打[TAB](也许更多)
  • 使用Zsh,先按[TAB],然后再按[TAB](进入菜单),然后按“ <-”(向左箭头键)以到达最后一个元素

在这种情况下,两者都是3个按键。剩下的大部分只是口味问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.