Zsh — よりインテリジェントな自動修正

Zsh — よりインテリジェントな自動修正

修正を完全にオフにしたり、修正を (コマンドのみを修正する) に制限したりせずに、Zsh が現在のディレクトリのファイルでファイルではない引数を修正しようとするのを停止することはsetopt CORRECT可能ですか?

たとえば、CORRECT_ALLが で設定されている場合setopt、次のようになります。

 gris@arefiev: ~% cd srcc 
change srcc to src-nyae? n

ここまでは順調です(引数はcdファイルである必要があります)。ただし、

 gris@arefiev: ~% man zile
change zile to .zile-nyae? 

何ですか? がオプションで呼び出されたときzileに に修正されることを期待しています。 のホスト パラメータ、 の最初の引数などを修正しようとしますが、これは非常に煩わしいです。.zileman-Csshsudo

alias man='nocorrect man'影響を受けるコマンドごとに set などといった頼みの綱に頼らざるを得ませんが、明らかにこれが最善の解決策ではありません。また、私は だけよりもCORRECT、頼みの綱プラスの方が好きです。CORRECT_ALLCORRECT

Zsh はzsh 4.3.17 (x86_64-unknown-linux-gnu)、Debian sid です。

アップデート: これが私の.zshrc http://pastebin.com/67mykgRv

答え1

Zsh には、補完機能は多数ありますが、修正機能はそれほど多くありません。補完機能は便利だが修正機能は便利ではないコマンドが多数あります。たとえば、引数を補完するには便利ですがmkdir(既存のディレクトリ内にディレクトリを作成する場合)、修正には役立ちません。このcorrect_allオプションは、どこでも修正機能を有効にするため、非常に厳しいものです。残念ながら、正しい入力セットが提供された場合のみ修正するオプションはありません。

特定のコマンドの修正をカスタマイズするには、correctionsタグを付けて、修正を実行するかどうかをカスタマイズします_correctの一部matcher-listまたはそうでない場合。これらはzstyle組み込み。

答え2

ディストリビューションに何かが欠けているように思われます。ほとんどのZSH実装には、コマンドと引数の位置に基づいてインテリジェントに補完する、ZSH用の事前構成された補完設定の大規模なコレクションが付属しています。たとえば、私のシステムにはzsh 補完パッケージ。インストールされ、適切にロードされると、ファイルではなく、ホスト名のみでmanマニュアルページにあるもののみを補完し、システムユーザー名で補完しますが、その後はホスト名などで補完するようになります。sshssh -lssh -l caleb

利用可能な zsh パッケージと、デフォルト設定が適切にロードされているかどうかを調べる必要があります。質問に記載されているような標準コマンドに対して、手動で多数のオーバーライドを設定する必要はありません。

関連情報