Ubuntu
如何在終端中自動完成長文件名
如果我在目前目錄中有一個以“build”開頭的長名稱的文件,我可以在控制台“build”中寫入,按下
Tab
並自動完成為我輸入完整的文件名。但是,如果我有多個以build
自動完成開頭的文件不起作用 - 它只會給我一個以build
.相反,在 Windows 中,
Tab
按鍵立即給我第一個文件的完整文件名,如果我Tab
第二次按鍵,它給我第二個文件名。如何像在 Windows 中一樣在 Linux 中自動完成文件名?PS:如果我有幾個僅通過副檔名不同的長文件名,那真的很糟糕。
如果它們的副檔名不同,則只有自動完成功能會自動填充所有內容,直到有多個選項。當製表符產生名稱列表時,鍵入下一個字元並再次按製表符以恢復自動完成。
由於我是 linux 思想,我真的對 Windows 自動完成的工作方式有異議,猜猜這是你習慣的;)
對我來說可以挽救生命的事情是讓 bash 循環遍歷各種可能性,而不是顯示一個愚蠢的列表。
由於 bash
readline
用於自動完成,因此將以下行添加到~/.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
您鍵入:e f`Tab``Tab``Tab`
它將向前循環:
e file1 e file2 e file3
當你想向後循環時,只需點擊
Shift
+Tab
2. 當您鍵入:very-complicated-command with lots of command line parameters
下次您需要相同的命令時,只需鍵入:
very`↑`
它會為你輸入:
very-complicated-command with lots of command line parameters
這將為您節省大量的 bash 時間!;-)