如果有多个文件/目录,如何使终端自动完成?
如果我有几个目录,比如:
afoo abar
有时我的终端会在按Tab键时拒绝自动完成(例如“cd a”然后是tab),而是打印目录列表。 有时甚至会发出嘈杂,恼人的声音。 知道如何在这种情况下使其自动完成吗? 例如,它可以先显示abar,然后再显示afoo,如果我再次按Tab键。 我在Windows中看到了这种情况,或者在Ubuntu中看到了一些应用程序
对我来说节省生命的事情就是让bash循环通过可能性而不是显示一个愚蠢的列表。
由于bash使用readline
进行自动完成,因此~/.inputrc
添加到~/.inputrc
一旦您满意并在下面的解决方案中进行了几天/几周的彻底测试,请将~/.inputrc
的相同设置剪切并粘贴 (不要复制!)到/etc/inputrc
,其中包含系统范围的设置,这适用于您系统上的所有用户(包括来宾)。
代码:
# 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
,则键入:ef Tab Tab Tab
它将循环通过:
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
这将为你节省大量的时间! 😉
在第一个标签后,您需要插入更多字母。 所以,如果你输入
cd a
并且点击标签你没有得到任何东西,在第二个标签后面(紧随其后)你得到一个以a
开头的名字列表然后需要插入一个f
让它自动完成余数所以
cd a
选项 卡 选项 卡 f
选项 卡 选项 卡
会导致
cd afoo