次のような複数のディレクトリがある場合:
afoo abar
時々、タブを押したときに端末がオートコンプリートを拒否し(例:「cd a」、次にタブ)、代わりにディレクトリのリストを印刷します。ときどき、うるさくて迷惑な音を出すことさえあります。このような場合にオートコンプリートにする方法はありますか?たとえば、最初にabarを表示し、次にタブをもう一度押すとafooを表示できます。私はこれがWindowsの場合、またはUbuntuのいくつかのアプリケーションであると見ました
私にとって命の恩人となるのは、ダムリストを表示するのではなく、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
端末(またはPuTTYなどのリモート端末)を開き、もう一度開きます...
file1
、file2
、およびfile3
の3つのファイルがある場合、次のように入力します。
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
1日後 tab さらに文字を挿入する必要があります。あなたが入力した場合
cd a
ヒット tab あなたは何も得ず、1秒後に tab (すぐに続く)a
で始まる名前のリストを取得し、その後f
を挿入して残りを自動補完する必要があります。
cd a
tabtabf
tabtab
になります
cd afoo