Zshには、完了に関連する自動化が少しあります。これは、ほとんどの場合、便利です。 Tab、スペースが自動的に挿入されます(または中括弧内の,
などの他の適切な文字)。
押した後に&
または|
と入力した場合を除いて、この機能を維持したい Tab、スペースを削除したくありません。 ;
のスペースを削除したいので、を押したときに自動的に挿入されるカンマを確実に抑制したい Tab}
中括弧の列挙。
この機能は、デフォルトで「古い」(compctl
)と「新しい」(compadd
)完了システムの両方で機能します。私は新しいシステムにのみ興味があります。
完了によって挿入された自動サフィックスの自動抑制を調整するにはどうすればよいですか?
この機能は、 _ZLE_REMOVE_SUFFIX_CHARS
_ および _ZLE_SPACE_SUFFIX_CHARS
_ シェルパラメーターで調整できます。
_ZLE_REMOVE_SUFFIX_CHARS
_変数が設定されている場合は、入力時に補完からの自動サフィックスが削除される文字のセットが含まれている必要があります。 _ZLE_REMOVE_SUFFIX_CHARS
_が設定されていない場合、デフォルトの動作は次のようになります。
_ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|'
_
_ZLE_SPACE_SUFFIX_CHARS
_で設定された文字の場合、スペースに置き換えられれば十分です。また、_ZLE_SPACE_SUFFIX_CHARS
_よりも優先されます
したがって、希望する動作を得るには、設定するだけで十分です。
_ZLE_SPACE_SUFFIX_CHARS=$'|&'
_
_,
_と入力すると、中括弧の列挙に自動的に挿入された_}
_が常に削除されるようです。
zshparam(1)
は、特定の完了システムがこの動作をオーバーライドする可能性があると述べていますが、「新しい」compsys
(あなたはそれをcompadd
と呼んでいます)で問題なく動作するようです。