有没有办法让 bash 对 TAB 更友好?

Fra*_*ger 31 linux unix bash command-line

我在 Mac 和 cygwin shell 上都使用 bash。总的来说,我对它非常满意。

然而,我的一个抱怨是它的 TAB 完成不如 Windows 命令行 TAB 完成。

例如,如果有两个文件具有相同的前缀,那么当我尝试 TAB 完成时,bash 只会对我发出哔哔声。如果我继续使用 TAB,它最终会向我显示潜在文件列表。

我绝对更喜欢 Windows 如何在命令行上循环浏览潜在文件。

在这方面,有没有办法让 bash 像 Windows 命令行一样运行?

如果没有(我不想切换外壳),我是否在 bash 中遗漏了有关 TAB 完成的某些内容?有没有更有效的方法来使用它?

Chr*_*sen 42

要获得“可能完成的循环”行为,请将以下内容复制到 .bashrc 文件中的适当位置:

[[ $- = *i* ]] && bind TAB:menu-complete
Run Code Online (Sandbox Code Playgroud)

此外,除了路径名补全之外,bash-completion还提供了许多额外的补全。例如,menu-complete 可以很好地与 Git 的 bash-completion 模块配合使用,以完成命令名称、选项名称等。

  • 有谁知道我应该绑定什么才能使用 Shift + Tab 返回一个选项? (5认同)
  • @ppp 在你的 `.bashrc` 中:`bind '"\e[Z":menu-complete-backward'` (4认同)
  • @Alex:您编辑主目录中的文件 `.bashrc`,使其包含指定的行。如果你的 `.bash_profile` 文件(在同一目录中)也没有像 `source ~/.bashrc` 这样的一行,那么你也应该编辑它以包含这样一行。该设置将在新的 *Terminal* 窗口中激活。如果您没有首选编辑器,您可以在 *TextEdit* 中使用命令 `open -e ~/.bashrc` 打开文件;如果该文件尚不存在,您将需要首先使用(例如)命令 `touch ~/.bashrc` 创建它。 (2认同)