像 zsh 一样的 Bash 自动完成

G G*_*III 38 bash zsh autocomplete

我正在使用 bash,但我想要 zsh 风格的自动完成(你点击选项卡,它通过选项卡浏览可能性),而不是 bash 似乎做什么,它显示一个可能性列表,但在我输入之前不选择任何内容还有一些可以消除歧义。如何在 bash 中获得 zsh 类型的行为?

寻找解决方案已经找到了许多其他问题的答案,所以我希望我能在这里得到一个简单的答案(即粘贴到我的.bashrc.

(为了回答这个显而易见的问题,我需要在这里使用 bash,因为我刚加入一个团队,他们做了一些事情来设置 bash 以使环境更易于工作。我可能最终可以确保我让它工作相同在 zsh 中的方式,但现在如果我使用 bash 并且在交互式使用期间让它表现得更像 zsh 会更容易。)

ing*_*bil 33

要获得第一个完成和列表,您可以将以下内容添加到 bashrc

bind 'set show-all-if-ambiguous on'
bind 'TAB:menu-complete'
Run Code Online (Sandbox Code Playgroud)

show-all-if-ambiguous:这会改变完成函数的默认行为。如果设置为“on”,则具有多个可能完成的单词会导致立即列出匹配项,而不是敲响警钟。默认值为“关闭”。

有关更多信息,请参阅Bash 手册

编辑:

这不会使 bash与 zsh完全一样工作。Zsh 将完成直到下一个模糊匹配。Bash 将循环遍历所有匹配项。

例如

$ ls ~/.ba<tab> .bashrc .bash_history .bash_profile

  • zsh:将在 ~/.bash 之前完成并显示匹配列表,您可以轻松地附加 _ 并<tab>再次点击。
  • bash:将循环遍历所有 ~/.ba* 匹配项。

  • 我喜欢使用箭头键和 zsh 自动完成的视觉指示。有没有办法用 bash 来获得这些行为?我切换回来以获得更好的服务器兼容性 (10认同)

Cic*_*ino 27

我用

bind 'TAB:menu-complete'
Run Code Online (Sandbox Code Playgroud)

实现它

  • 当我将它添加到我的 .bashrc 时,选项卡会循环显示可能的选项,而不是在终端中列出它们。是否有可能同时获得这两种行为? (13认同)

Rak*_*iha 21

在 Bash 中:可以使用Ble.sh实现类似 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
Run Code Online (Sandbox Code Playgroud)

这是带有 blesh 的 Bash 的快速演示。有关更多详细信息,请参阅:Ble.sh 的README

在此输入图像描述

  • 我可以知道为什么它在没有任何解释的情况下被不必要地否决吗?请通过建议编辑来帮助改进这个答案,而不是在没有任何有见地和可操作的细节的情况下否决。 (4认同)