複数のファイル/ディレクトリがあるときにターミナルをオートコンプリートする方法は?


32

次のような複数のディレクトリがある場合:

afoo abar

時々、タブを押したときに端末がオートコンプリートを拒否し(例:「cd a」、次にタブ)、代わりにディレクトリのリストを印刷します。ときどき、うるさくて迷惑な音を出すことさえあります。このような場合にオートコンプリートにする方法はありますか?たとえば、最初にabarを表示し、次にTabキーをもう一度押すとafooを表示できます。私はこれがWindowsの場合、またはUbuntuのいくつかのアプリケーションであると見ました

回答:


46

私にとって命の恩人となるのは、ダムリストを表示するのではなく、可能性をバッシュサイクルすることです。

bashはreadline自動補完に使用しているため、次の行を追加します~/.inputrc

あなたは満足しているし、完全に数日/週、のためのソリューションの下にテストした後、カット・アンド・ペースト(コピーしないでください!)から同じ設定~/.inputrc/etc/inputrcシステム全体の設定が含まれているが、システム上のすべてのユーザーに、この利用可能にすること(ゲストを含む)。

codez:

# 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あなたの端末(パテ状又はリモート端末)と、再びそれを開きます...

例:

  1. 3つのファイルがある場合:file1file2およびfile3入力:

    e fTabTabTab

    それは循環します:

    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の時間を大幅に節約できます!;-)


2
+1、興味深い、しかし:1.より~/.inputrcも望ましい/etc/inputrc場合があります。2.これをbash直接設定できると思います:unix.stackexchange.com/q/55203/70524、unix.stackexchange.com / a / 16926/70524

これはとてもいいです、ありがとう(そして私の賛成票をください)。両方の長所を組み合わせた、ループするオプションを表示する普遍的な方法はありますか?フォルダーサブコマンドなどのタブ+タブの可能性が好きなので、すべてを覚える必要はありません(たとえばgit branch <tab through branches>、そのアイテムのリストタブを見ることができれば、それは素晴らしいでしょう!ディレクトリとファイルの場合ls利用可能な項目を確認するオプションがあるしかし、サブコマンドのは、残念ながら、ないことは容易か、明らかである。。
エリック

これはPuTTyでも機能します!一度だけ再起動する必要がありました:)
np8

@Erik:どうやら、あなたが求めたことは可能ですが、ここで物事を単純にするために私の答えを編集するつもりはありません。(それは不可能だという古いコメントを削除しました)
ファビー

18

1日目以降は、tabさらに文字を挿入する必要があります。あなたが入力した場合

cd a

ヒットtabすると何も得られず、1秒後にtab(すぐに続く)名前のリストが始まり、残りを自動補完aするfためにを挿入する必要があります

cd atabtabftabtab

になります

cd afoo

2
私見:これは正しい方法です。個人的には、Windowsの動作は非常に迷惑です。で始まるファイルがたくさんaあり、最後のファイルが必要な場合を考えてください。a正しいものに到達するために可能なすべての補完のリストを循環する必要がある後に誤ってタブを押したとき。
トバイアス

@Tobias:他のシステムを使用して誤って[Tab]を押しすぎた場合、 [Ctrl] [K] ...がまだあります... ;-)
Fabby
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.