如何让zsh完成更像bash完成?

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

当我点击标签键时,第一个自动完成是自动填写的,你需要反复敲击标签来循环完成。

这不同于bash,在这里你只显示完成列表。 如果所有完成项都有相同的前缀,则填写该前缀。 你可以通过继续input来select你想要的。

我觉得后者比较好,因为键入的速度比通过反复敲击选项卡来select完成要快。

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

setopt noautomenu setopt nomenucomplete 

你需要他们两个。 如果你点击标签足够多的时间,你会得到完成列表,但它永远不会添加任何字符到你已经input到目前为止。

我不认为这是默认行为,但您可以通过使用以下closures它:

 setopt +o menucomplete 

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

你可以通过做交互configuration许多其他的事情:

 autoload -U compinstall compinstall 

并按照提示和菜单。

在Bash中,这个行为是通过绑定Tab来控制的,在~/.inputrc complete或者complete menu-complete

 "\Ci": complete # do list completion 

或者从shell提示符或~/.bashrc

 bind '"\Ci": menu-complete' # do menu completion