vi
特定のファイル名(例:files)を除外するように既存のbashオートコンプリートルールを変更したいと思いますconfig.log
。私はFIGNORE
成功せずに環境変数を使ってみました。組み込みルールを使用すると、既存のcomplete
ルールを変更するのではなく上書きします。
これを行う方法はありますか?
答え1
Bash Completeから役に立たないファイル名または拡張子を除外するには、.bashrcファイルに次の行を追加します。
FIGNORE=".log:.dvi:.pdf:"
答え2
次のコマンドを使用して、現在の構成を表示できます。
complete -p vi
complete -o bashdefault -o default -o filenames -o nospace -F _exp_ vi
そして使用されるシェル関数の定義
type _exp_
結果をフィルタリングするcomplete
機能/オプションがあります。-X
問題は、これがcomplete
アクションでのみ機能することです。結果は動作しません-o default
(わかりません-o bashdefault
)。
コンポーネントを変更できます。
complete -d -f -o filenames -o nospace -F _exp_ -X '@(config.log|config.doc)' vi
残念ながら
-X
通話には1つしか存在できませんcomplete
(以前の通話は上書きされます)。機能するには上記が必要です
shopt -s extglob
。それ以外の場合は、名前またはパターン("*.log"
)のみを使用できます。