有没有一种方法可以使bash对TAB更加友好?


31

我在Mac和cygwin外壳上都使用bash。总体而言,我对此感到非常满意。

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

例如,如果有两个具有相同前缀的文件,那么当我尝试完成TAB时,bash会向我发出蜂鸣声。如果我一直钉TAB,那么它最终将向我显示潜在文件的列表。

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

有没有办法让bash在这方面类似于Windows命令行?

如果没有(我不想切换外壳),我是否在bash中缺少有关TAB完成的信息?有没有更有效的使用方法?

Answers:


42

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

[[ $- = *i* ]] && bind TAB:menu-complete

另外,bash-completion除了提供路径名补全之外,还提供了许多其他补全。例如,菜单完成可以与Git的bash-completion模块配合使用,以完成命令名称,选项名称等。


在OSx终端上执行此操作的过程是什么?
亚历克斯

2
@Alex:您.bashrc在主目录中编辑文件,使其包含指定的行。如果您的.bash_profile文件(在同一目录中)也没有类似的行source ~/.bashrc,那么您还应该对其进行编辑以包括这样的行。该设置将在新的终端窗口中激活。如果没有首选的编辑器,则可以使用以下命令在TextEdit中打开文件open -e ~/.bashrc:如果文件尚不存在,则需要首先使用(例如)命令创建文件touch ~/.bashrc
克里斯·约翰森

1
@ Alex,Bash是10.3和更高版本(包括10.7(Lion))上的默认Shell。第一echo $SHELL。这将是为您的用户帐户选择的外壳。如果这不是您想要的,则需要使用chpass -s /bin/bash(或所需的任何外壳)更改外壳。如果$ SHELL没问题,请检查“ 终端”>“首选项”>“启动”>“命令行管理器”,并使用“ 终端”>“首选项”>“设置”>“配置文件”>“ Shell”>“启动”,以查看默认用户命令行管理程序是否已被自定义命令覆盖。
克里斯·佩奇

5
有谁知道我应该绑定什么才能通过Shift + Tab返回一个选项?
ppp

3
@ppp在您的.bashrcbind '"\e[Z":menu-complete-backward'
Vault
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.