タブを使用したオートコンプリートは、特定の種類のファイル名では機能しません。

タブを使用したオートコンプリートは、特定の種類のファイル名では機能しません。

通常、ファイル名の最初の数文字を入力してTabキーを押すと、完全なファイル名を取得できます(同じ開始文字がある場合はアドバイス)。

ただし、特殊文字を含むファイル名では機能しないようです。特に私は、~/.vim/viewvimを使用して開いたすべてのファイルの折りたたみ位置(行番号)などの詳細を含むファイルを含むディレクトリにいます。人々が以前に作業したファイルを再び開くと、vimはこれらのファイルを使用して正しい折りたたみなどを介して同じ「ビュー」を復元します。今(少なくとも私のボックスに)この非常に便利なファイルが最も奇妙なファイル名を持つようです。たとえば~=+temp=+test.sh=、これらのファイルには=+temp=+test.sh=それぞれファイルに関する情報と最後の「ビュー」があります。~/temp/test.sh/temp/test.sh

私は通常このディレクトリに行き、次のことを行い、タブをクリックしたときにオートコンプリートされls -l ~=+temたいと思います。~=+temp=+test.sh=

しかし、そのようなことは起こりませんでした。なぜ?実装するにはどうすればよいですか?

私はFreeBSDでBashを使用しています。記録のために、私はこれをzsh、csh、tcsh、およびsh(同じOS)で試しました。特定のシェルには質問タグを追加していませんが、そうする必要があると思われる場合は自由に追加してください。

答え1

私の考えでは、Bashが=ファイル名を完成したときと前の部分を省略しているようです。おそらく。--some-file=<filename>

たとえば、ファイルfoofoofoobar存在する場合を入力すると、自動的にプレフィックスが完成し、両方のファイル名が一覧表示されます。echo asdf=f<tab>foo

という名前のファイルを使用すると、asdf=xyz後のセクションで自動補完されます。echo asdf=a<tab>=echo asdf=asdf\=xyz

=はい、Bashを脱出する必要がありますファイル名自動補完時。これは生成されたコマンドには問題ありませんが、この意味ではシェルには特別な意味はありません。

一方、ファイル名にチルダがある場合は問題にならない可能性があります。ユーザーが呼び出さない限り、そのままに=+temp=+test.sh=してください。

関連情報