私はこれを検索する方法を見つけることができず、これがすでにインターネット上で説明されていることを確認できません。
コマンドラインに次のものがあり、<TAB>
最後を押してファイルの完成を開始したいと思います。
mycmd process file=data/old/1/
Bashを使用すると、このタブにはフォルダ内のファイルが表示されますが、1/
Zshではシンボルの後にスペースを入れない限りこれは発生しません=
。このためにZshを再設定できますか?
答え1
setopt magic_equal_subst
これは、既存のスタイルと新しいスタイルの終了の両方に適用されますcompinit
。
後でファイル名の完成が=
あいまいで文書化されていない副作用です。magic_equal_subst
オプション。このオプションのロギング効果は次のとおりです。ファイル名拡張子後ろに=
。
ほとんどの場合、このオプションの効果を確認すると、これは望ましい効果です。
somecommand --option=~/file
somecommand
というディレクトリのパスではなく、ホームディレクトリの下のパスをに渡します~
。ただし、これはファイル名拡張子を引き起こす引数のために望ましくない効果がよく発生します==
。
somecommand foo==bar
foo=/bin/bar
コマンドがatにある場合は通過します。コマンドを文字通り渡すには、少なくとも等号で引用する必要があります。bar
$PATH
/bin/bar
==
somecommand foo=\=bar
somecommand foo\==bar
新しい完成システムでは、これは内部的に処理されます。_default
。=
有効にせずにファイル名を完成させるには、同じ効果を得るためにオーバーライドまたはmagic_equal_subst
ラップする必要があります。_default
たとえば、
autoload +X -U _default
functions[_default]="setopt local_options magic_equal_subst; $functions[_default]"