我如何使zsh完成行为更像bash完成?


17

我是最近从bash转换为zsh(我使用的是“哦,我的zsh”),但有一件事使我感到烦恼:

当我按下Tab键时,第一个自动完成功能会自动填写,您需要通过反复点击Tab键来循环完成操作。

这与bash不同,在bash中仅显示完成列表。如果所有补全都具有相同的前缀,则填写该前缀。您可以通过继续输入来选择一个。

我发现后者是可取的,因为它的键入比通过反复单击制表符来选择补全要快。

有什么办法可以使zsh完成在这方面更像bash吗?

Answers:


18
setopt noautomenu
setopt nomenucomplete

您需要两个。如果您按Tab键足够多的时间,您将获得补全列表,但它永远不会在到目前为止输入的内容中添加任何字符。


3

我不认为这是默认行为,但是您可以使用以下命令将其关闭:

setopt +o menucomplete

即以不同方式影响这种行为的其他设置包括:autolistautomenubashautolistlistambiguous。有关man zshoptions详细信息,请参见的“完成”部分。您可以将此命令添加到~/.zshrc文件中。

您可以通过以下方式交互式地配置许多其他内容:

autoload -U compinstall
compinstall

并按照提示和菜单进行操作。

在Bash中,此行为是通过绑定Tabcompletemenu-complete中来控制的~/.inputrc

"\C-i": complete   # do list completion

或从shell提示或中~/.bashrc

bind '"\C-i": menu-complete' # do menu completion

1
元注释:您如何获得“ tab”字符的外观?
好人2010年

2
@好人:<kbd>Tab</kbd>
暂停,直到另行通知。
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.