実行しようとしているプログラムの形式program_name --arg=/some/path/goes/here
は ですが、引数フラグにある場合、zsh はそのパスでタブ補完を実行できません。入力progra<TAB> /so<TAB>/pa<TAB>...
してパスを完成させてから、戻って--arg=
コマンドの一部を追加する必要があります。これを行うためのより効率的な方法はありますか?
1 に答える
あなたの状況では、zshがまだファイル補完を行おうとしている可能性があります--arg=
. がファイル名の最初の部分であると考えているだけで、一致するものが見つからない. コマンドが引数をどのように解釈するかについての普遍的な規則はないため、最も安全なオプションは、シェルがそれらの引数について何も仮定しないことです。
=
このタイプの構文を使用する多くのコマンドは、.などの記号ではなくスペースを使用すると、同じように機能しprogram_name --arg /some/path/goes/here
ます。それは別の引数になるため、シェルは問題なくファイル補完を実行できるはずです。
zsh の設定方法によっては、setopt MAGIC_EQUAL_SUBST
. 私は通常、そのオプションを設定して、探している動作を取得しますが、そのオプションを設定解除すると、現在経験している動作を取得します。しかし、zsh -f
設定の読み込みをスキップする場合、そのオプションを有効にするだけでは十分ではないため、設定に必要な何かが他にあるようです。これにより望ましくない動作が発生する場合がありますが、そのオプション セットで zsh を使用してきた長年の間、そのような動作に遭遇したことはありません。
より複雑なオプションは、そのオプションが引数としてファイル名を取ることをzshに伝えるコマンドの補完関数を書くことです。