bash または zsh での左タブ補完

bash または zsh での左タブ補完

bash または zsh で標準のタブ補完を使用する場合、ファイル名またはパスの最初の部分を入力し、 キーを押して単語を補完します。これは、ファイル名のバリエーションがすべて単語の末尾にあるファイルでいっぱいのディレクトリにいる場合を除き、うまく機能します。たとえば、すべて同じプレフィックスで始まるタイムスタンプ付きのファイルでいっぱいのディレクトリ:

foo-20120701124501.log
foo-20120701124531.log
foo-20120701124601.log
foo-20120701124631.log
foo-20120701124701.log
foo-20120701124731.log

この場合、入力するとfoo<tab>foo-20120701124もう一度タブキーを押してすべてのファイルを表示できます...一意のファイル名を取得するには、次の 3 文字を入力する必要があります。

4731.logたとえば と入力して単語の先頭を補完する 方法があるかどうか疑問に思っています。これは bash では難しいのではないかと思います。bash の補完では、プログラム可能な補完に$COMP_CWORDと が使用さ$COMP_KEYれるためです。私が読んだところによると、これらでは左方向の単語補完はできないようです。zsh 内の補完について十分な知識がないため、マニュアル ページのどこから調べればよいかわかりません。

答え1

これは、Tab キーを押す前に先行コマンドがある場合にのみ機能します。おそらく、これはあなたが探しているものではないかもしれませんが、私が希望する結果を得ることができた唯一の方法です。以下の例は、あなたのケースで機能するはずです。*4731.log の末尾に移動して、Tab キーを 1 回押すだけです。一意である場合は、自動補完されます。

ls *4731.log

関連情報