类似 zsh 的 Bash 自动完成功能

类似 zsh 的 Bash 自动完成功能

我正在使用 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

在 Bash 中:可以使用以下方法实现类似 Zsh 的自动完成功能布莱什

# Quick TRIAL without installation
# requires the commands git, make (GNU make), and gawk

git clone --recursive https://github.com/akinomyoga/ble.sh.git
make -C ble.sh
source ble.sh/out/ble.sh

以下是使用 blesh 进行 Bash 的快速演示。有关更多详细信息,请参阅:自述Bl.sh 的

在此处输入图片描述

答案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清洁。

相关内容