我正在使用 bash,但我希望拥有 zsh 风格的自动完成功能(您按下 Tab 键,它会按 Tab 键浏览各种可能性),而不是 bash 似乎所做的那样,即显示可能性列表,但不选择任何内容,直到我输入更多内容以消除歧义。如何在 bash 中获得 zsh 类型的行为?
搜索解决方案已经找到了许多其他问题的答案,所以我希望我可以在这里得到一个简单的答案(即将什么粘贴到我的.bashrc
)。
(回答这个显而易见的问题,我需要在这里使用 bash,因为我刚刚加入了一个团队,他们做了一些设置 bash 的事情,以使环境更容易工作。我最终可以确保它在 zsh 中以相同的方式工作,但现在如果我使用 bash 并让它在交互使用过程中表现得更像 zsh,会更容易。)
答案1
我用
bind 'TAB:menu-complete'
实现它
答案2
为了获得第一个完成和列表,您可以将以下内容添加到 bashrc
bind 'set show-all-if-ambiguous on'
bind 'TAB:menu-complete'
show-all-if-ambiguous:这会改变补全功能的默认行为。如果设置为“on”,则具有多个可能补全的单词会导致立即列出匹配项,而不是响铃。默认值为“off”。
看Bash 手册了解更多信息。
编辑:
这不会使 bash 工作确切地和 zsh 一样。Zsh 将完成直到下一个模糊匹配。Bash 将循环遍历所有匹配。
例如
$ ls ~/.ba<tab> .bashrc .bash_history .bash_profile
- zsh: 将完成直到 ~/.bash 并提供匹配项列表,您可以方便地添加 _ 并
<tab>
再次点击。 - bash: 将循环遍历所有 ~/.ba* 匹配项。
答案3
答案4
跟进英格克比尔bind
对于那些将和set
放入的人来说,答案是inputrc
:
$ tail -n 4 /etc/inputrc
# zsh like completion:
# https://superuser.com/questions/288714/bash-autocomplete-like-zsh
set show-all-if-ambiguous on
TAB:menu-complete
我喜欢保持.bashrc
清洁。