
vim
Bashでは、2つのディレクトリよりも深いパスを含むコマンドを実行すると、最近のパスオートコンプリート機能が機能しなくなりました(およびls
他のコマンドの場合は予想どおりに機能し続けましたcd
)。
たとえば、入力ls .config/btsync/bt
してTABを押すとls .config/btsync/btsync.conf
。
を入力してvim .config/bt
TABを押すvim .config/btsync/
。
ただし、入力してTABを押すと何も起こりません。 (上記の例のようvim .config/btsync/bt
に拡張したいと思います。vim .config/btsync/btsync.conf
ls
私のユーザーとして実行するときとsuで実行するときに同じ問題があります。
私は読んだこの投稿以前のバージョンのbash-completion関連の問題が言及されていますが、2.1-5を実行しています。
アップデート:いくつかの追加テストを経た後の根本的な問題はbashですただファイル名ではなく、完全なディレクトリ名です。
bash-completion
アップデート:これが全体的な理由であることがわかりました。許可された回答についての2番目のコメントを参照してください。
この動作の潜在的な原因について提案をいただきありがとうございます!
答え1
私はあなたのためにもう少し調査した結果、これが私が見つけたものです。オートコンプリートの鍵はコマンドbash
ですcomplete
。使用ルールを印刷できますvim
。
complete -p vim
繰り返しますが、次の方法でこれらの特定のルールを削除できます。
complete -r vim
このコマンドはそれをデフォルト値(追加のロジックなしで一般的なパスとファイル名の完成)にリセットします。これはあなたが望むものかもしれません。
詳細については、コマンドのセクションを確認help complete
または参照してください(bash組み込み機能なので、bashのマンページに文書化されています)。man bash
complete
bash
最後の注意 - ログインするたびにvimルールを削除したい場合は、上記の変更は現在のセッションにのみ影響complete -r vim
します~/.bashrc
。
役に立ったことを願っています:)
答え2
Bashはデフォルトでパスとファイル名のみをオートコンプリートします。しかし、メカニズムは拡張可能であり、bashはさまざまなプログラムに対してさまざまなオートコンプリートを実行するように教えることができます。たとえば、git
パス名だけでなく、サブコマンド名(レプリケーション、コミット)とリビジョンも自動補完できます。拡張子なしでファイル名をgzip -d
自動補完することを拒否する場合など、便利な場合もありますが、迷惑な場合もあります。.gz
Bashの完成は通常、以下で構成されています。ここで呼ばれるファイルを見つけることが/etc/bash_completion.d
できます。vim
このファイルには、コマンドvim
ラインのオートコンプリートルールが含まれています。
今、2つのオプションがあります。
- ユーザーが期待どおりにファイルをオートコンプリートパスに変更します。
- 特別なルールを無効にし
vim
てデフォルトパスのオートコンプリートのみを実行するには、このファイルを削除してください。
もちろん、今後のリリースで修正されるように問題を説明するバグレポートも送信してください。 :)
答え3
bash コンプリートを再インストールすることもできます。
apt-get install --reinstall bash-completion
/etc/bash.bashrcファイルを見てください。
nano /etc/bash.bashrc
そして、次の行のコメントが完全に削除されていることを確認してください。
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
その後、端末セッションを再開します。