我最近从 bash 转换到了 zsh(我正在使用“oh my zsh”),但有一件事让我很烦恼:
当我按下 Tab 键时,第一个自动完成项会自动填写,您需要通过反复按下 Tab 键来循环完成。
这与 bash 不同,bash 只会向您显示补全列表。如果所有补全都有相同的前缀,则此前缀会被填充。您可以通过继续输入来选择所需的一个。
我发现后者更可取,因为它打字速度更快,而不是通过反复按 Tab 键来选择完成。
有没有什么办法可以让 zsh 完成行为更像 bash?
答案1
setopt noautomenu
setopt nomenucomplete
您需要两者。如果您多次按下 Tab 键,您将获得完成列表,但它永远不会在您迄今为止输入的内容中添加任何字符。
答案2
我不认为这是默认行为,但你可以使用以下命令将其关闭:
setopt +o menucomplete
其他以不同方式影响此行为的设置包括:autolist
、automenu
、bashautolist
、 。有关详细信息,listambiguous
请参阅“完成”部分。您可以将此命令添加到您的文件中。man zshoptions
~/.zshrc
您可以通过以下方式以交互方式配置许多其他内容:
autoload -U compinstall
compinstall
并按照提示和菜单进行操作。
Tab在 Bash 中,此行为通过绑定到complete
或menu-complete
来控制~/.inputrc
:
"\C-i": complete # do list completion
或者从 shell 提示符或者在~/.bashrc
:
bind '"\C-i": menu-complete' # do menu completion