回答:
$ bind -p | grep 'complete$'
"\C-i": complete
"\M-\e": complete
これは、Emacsコマンドライン編集モードでのMeta+Esc(およびCtrl+i)のデフォルトのキーバインディングがReadline関数であることを示していますcomplete。Metaキーは通常、Esc明示的に使われていないキーボード上のMetaキー。この関数のReadlineドキュメントは言う
ポイントの前のテキストを補完しようとします。実行される実際の完了はアプリケーション固有です。たとえば、Bashはテキストを変数(テキストがで始まる場合
$)、ユーザー名(テキストがで始まる場合~)、ホスト名(テキストがで始まる場合@)、またはコマンド(エイリアスと関数を含む)として順番に処理して補完を試みます。これらのどれも一致しない場合、ファイル名の補完が試みられます。一方、Gdbはプログラムの関数と変数の補完を許可し、特定の状況でのみファイル名の補完を試みます。
Anthonの回答へのコメントについて:いいえ、Esc2回押すことはTab一般的に押すことと同じではありません(Readlineがデフォルトで行うように、両方を同じアクションにマップするプログラム内にある場合を除きます)。しかしCtrl+i であると同じTabだけのよう、Ctrl+[と同じですEsc。つまり、double がReadline 関数にバインドされている限り、必要に応じてCtrl+[ Ctrl+[inで補完を実行できます。これは、たとえばEscキーがないVT220端末で作業している場合に便利です。bashEsccomplete
complete関数にバインドされている場合も同じです。これらはデフォルトではありますが、一般的ではありません(つまり、キープレスは「同じ」ではありません)。どこでもEsc-EscでTabを置き換えることはできません。readline対応のプログラムでのみです。ただし、どこでも、TabをCtrl-iに、またはEscをCtrl- [に置き換えることができます。
Tabの出力に表示されませんbind -p。何故ですか?多分Tab「ハードコード」されていてバインドできないからでしょうか?
\C-iます。これは、ハードウェアレベルで同等です。
これはファイル補完と呼ばれ、コマンドラインに先行するコマンドがない場合、bashは、組み込みのコマンドと、 PATH
ソートされた順序で表示されます
Esc(または\M-\e)を2回押すのTabですか?