Bashが完了オプションをインテリジェントに制限するのを防ぐ方法は?

Bashが完了オプションをインテリジェントに制限するのを防ぐ方法は?

私はしばしば、次のようなことをするときにbashが邪魔になる状況に直面します。

cmake -DCMAKE_INSTALL_PREFIX=/usr/<TAB><TAB>

cmake明らかに、bashは許可されているパスを見ていないようです。理解できません。何もない完了することをお勧めします。たとえば、Ubuntu 14.04では、bashを使用してこれが発生します4.3.42。 bashを持つUbuntu 12.04と手動でコンパイルされたbashを持つBLFS4.2.25ではこれは発生しません4.3.39

回避策として、ls行の先頭に挿入し、=bashが完了オプションを表示する前に、パス間にスペースを追加する必要がありました。これで、フルパスを作成した後に追加された回避策を削除することを忘れないでください。

このインテリジェンスなしで実行するようにbashを設定するにはどうすればよいですか?つまり、他の提案がない場合は、常にルートを提案しますか?

答え1

Bashはサブディレクトリを含むcmakeディレクトリを探していますが、何も見つかりません。この状況でファイル名を完成させるための簡単な修正方法は、等号の後にスペースを追加してから削除することです。-DCMAKE_INSTALL_PREFIX=usr

コンテキストに関係なく、readline関数(デフォルトでは+complete-filenameにバインドされています)を呼び出すことで、常にAltファイル名を完成させることができます。/

私はBashに普遍的な完成代替機能がないと思います。各個別の完成機能に追加する必要があります。 (またはzshに切り替えてください。)

関連情報