_path_filesの-Fオプションの形式は何ですか およびcompadd ?
いくつかのディレクトリを_path_filesに渡します :
_path_files -W "($base_directories)" -/
しかし、この特定のコマンドのために完成させたくないディレクトリツリーのいくつか。
_path_filesについて見つけることができるドキュメント -Fを受け入れると言います オプション-compaddと同じです 、しかし、それらを渡すための形式が見つかりません。
いじくり回してもあまり実りはありませんでした。
たとえば、試しました
_path_files -W "($base_directories)" -/ -F shared; # shared still shows up
_path_files -W "($base_directories)" -/ -F "(shared)"; # barfs on that guy
承認された回答:
sharedを無視したい場合は、これは正しいように見えます ディレクトリツリーのルートにあります。つまり、$base_directoriesの1つを無視している場合です。 。ただし、sharedを無視する場合 階層のより深い場所では、-F "(shared **shared)"が必要です。 。パターンを配列に配置することもできます。これにより、引用の手間が軽減されます。
local -a ignored base_directories
base_directories=(…)
ignored=(shared '*/shared')
_path_files -W base_directories -/ -F ignored
_cvsの標準分布には例があります および_darcs 。
それでも問題が解決しない場合は、set -xを追加して何が起こっているのかを調べてみてください およびset +x 問題のあるコードの周り、またはsetopt local_options xtrace (別名set -x 現在の機能の期間中のみオプションを変更します。