
私はタブの完成がシェルの標準機能になって以来、非常に満足のいくユーザーでした。私はBashのスマートコンプリート機能(evince foo <TAB>を入力するとPDFファイルのみを検索します)も気に入っています。
Bashがスマートコンプリートを使用して完了を拒否すると、幸せな一日を台無しにすることができます。
今日私が望むもの:
tar xvf centos5.8_x86_1.ova
だから私は次のように入力します:
tar xvf cent<TAB>
.ovaファイルは通常tarによって使用されるファイルではないため、Bashはパスの完成を拒否します。
bash-completionパッケージを削除してスマートコンプリートを削除できることを知っています。ところでケーキも食べて食べてもいいですか?
bashに最初にスマートコンプリートを使用するように依頼し、失敗した場合はスマートコンプリートではないものを使用できますか?
答え1
tar、vim、およびemacsプログラムのすべての「スマート」完了が失敗した後、次のコマンドは通常のbash完了を有効にする必要があります。
compopt -o bashdefault tar vim emacs
また見てください関連ページオンラインbashマニュアルにあります。
注:現在のコマンドのスマートコンプリートとして定義されているコンプリートタイプ(コマンド/ファイル名/ユーザー名など)の正常な動作が得られます。たとえば、 を呼び出しても、補完はservice
ファイル名を補完しませんcomplete -o bashdefault service
。
この場合とスマートオートコンプリートが失敗する他の場合は、いつでもAlt-/
(またはM-/
bashマニュアル表記で)を押すことで完了できます。ファイル名スマートコンプリートが無効になっている場合、TABの動作方法とほぼ同じです(M-/
同様のモードを完了しないという点でほぼ同じ方法*.txt
)。バラよりここコマンドやユーザー名など、他のタイプの完成に使用されるキー入力シーケンスです。
答え2
オレさん:-)、
ケーキも食べて食べてください:
<tab>
bashがいつ完了するかについての最善の推測を提供します。ご存知のように、時にはこれが間違っていることがあります。
しかし、bashの完成が不完全な場合M-/
(ALT
++(デンマーク語キーボードでは左、右ではない))SHIFT
は強制的にファイルに仕上がります。そのため、ファイルに強制的に完成したいときにこれを使用します。7
ALT
AltGr
M-/
私にとって、それは2つの世界の最高です。
答え3
bashの完成は、それ自体がbashプログラムであるbash標準の完成の拡張です。したがって、プログラムの動作方法を変更したい場合は変更してください。これはフリーソフトウェアなので、自由に使えます。このコマンドの特定の場合、tar
ファイルはです/usr/share/bash-completion/completions/tar
。tar
拡張子を持つファイルをオートコンプリートするには、その行に追加するova
だけです。
local tars='@(@(tar|gem|spkg)?(.@(Z|[gx]z|bz?(2)|lzma))|t@([glx]z|bz?(2)))'
だから言う
local tars='@(@(tar|gem|spkg|ova)?(.@(Z|[gx]z|bz?(2)|lzma))|t@([glx]z|bz?(2)))'
これはDebian Wheezy(現在の安定版)のパスと既存のコードです。ディストリビューションやバージョンによってコードが異なる場合がありますが、アイデアは同じです。コードを開き、必要な操作を実行するように調整します。
編集:ちょうど問題は、一致するものが見つからず、追加するのではなく、毎回特定のova
ケースに関するものであることがわかりましたtar
。おそらく、誰かがソースを見つけることができる場所を知らせることがまだ役に立つかもしれません。