Makefile
が含まれているディレクトリにある場合は、makeにzsh補完を使用します。
make <TAB>
2つの仕上げセットを実行します。
- Makefileのターゲット
- 現在のディレクトリのファイル
私は1)
2)を無効にする方法は?
_make
完成したファイルをここに貼り付けました。https://ctxt.io/2/AADge23ZFg
答え1
完了ステータスはから取得されます_alternative 'targets:…' 'variables:…' '*:…'
。
これ_alternative
この関数は、次の中から選択肢をリストします。商標。タグの順序と選択は次のとおりです。設定そしてtag-order
スタイル。スタイルの文脈は次のとおりです:completion::complete:make::
。ドキュメントでこの問題を解決できます(含まれています)。zstyle
、または^X?
(_complete_debug
)。
私が理解したのは、ターゲットと変数名だけを完成させ、ファイル名を完成させたくない場合は、次のようにタグの順序を設定できます。
zstyle ':completion::complete:make::' tag-order 'targets variables' -
しかし、実験を通して、これはまったく完成度を提供せず、その理由を理解していません。
しかし、実際に機能し、おそらくより便利なのは、ターゲット名と変数名の優先順位を付けるようにラベルの順序を設定することです。次に、一致するターゲット名または変数名がない場合にのみファイル名を完成させてください。make stuffTab
zstyle ':completion::complete:make::' tag-order 'targets variables'
または、一致するターゲットがない場合は変数を無視し、ターゲットまたは変数が一致しない場合はファイルを無視します。
zstyle ':completion::complete:make::' tag-order targets variables
make
(ああ、そして完璧にするために完全に無効にされたパラメータを使用してすべてのファイル補完を使用することができます。しかし、これは残念ながら他のコンテキスト文字列がないzstyle ':completion::complete:make::' file-patterns ''
などの項目に対する補完も無効にします。)make -f