问题描述
如果我有多个目录,例如:
afoo abar
有时我的终端会在我按下制表符(例如 “cd a” 然后制表符)时拒绝自动完成,而是打印目录列表。有时它甚至会发出嘈杂、烦人的声音。知道如何在这种情况下使其自动完成吗?例如,如果我再次按 Tab,它可以先显示 abar,然后再显示 afoo。我在 Windows 中看到了这种情况,或者在 Ubuntu 中看到了一些应用程序
最佳方法
对我来说 life-saver 是让 bash 循环遍历各种可能性,而不是显示一个愚蠢的列表。
由于 bash 使用 readline
作为其 auto-completion,将以下行添加到 ~/.inputrc
一旦您满意并在几天/几周内彻底测试了以下解决方案,请剪切并粘贴(不要复制!)从 ~/.inputrc
到 /etc/inputrc
的相同设置,其中包含 system-wide 设置,使系统上的所有用户都可以使用(包括客人)。
编码:
# mappings to have up and down arrow searching through history:
"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right:
"\e[C": forward-char
"\e[D": backward-char
# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:
"\t": menu-complete
"\e[Z": menu-complete-backward
然后 exit
你的终端(或腻子之类的远程终端)并再次打开它……
例子:
-
当您有 3 个文件时:
file1
、file2
和file3
并键入:e fTabTabTab
它会循环:
e file1 e file2 e file3
当你想向后循环时,只需点击
Shift
+Tab
-
当您键入:
very-complicated-command with lots of command line parameters
下次您需要相同的命令时,只需键入:
very↑
它会为你输入:
very-complicated-command with lots of command line parameters
这将为您节省大量的 bash 时间! 😉
次佳方法
在第一个 tab
之后,您需要插入更多字母。所以如果你输入
cd a
并点击 tab
你什么也得不到,第二个 tab
(紧随其后)你得到一个以 a
开头的名称列表,然后需要插入一个 f
让它自动完成其余部分
cd a
tab
tab
f
tab
tab
将导致
cd afoo