Zsh — よりスマートな自動修正

Zsh — よりスマートな自動修正

setopt CORRECT変更を完全にオフにしたり、変更を制限せず(正しいコマンドのみ)、Zshに現在のディレクトリに属していないファイルのパラメータ変更を停止させることはできますか?

たとえば、CORRECT_ALL次のように設定すると、setoptこれが発生します。

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

これまではとても良いです(引数はファイルでcdなければなりません)。しかし、

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

何?zileoptionsで呼び出される時間が変更されることを願っています.zile。また、ホストパラメータ、最初のパラメータなどを変更しようとしますが、これは本当に迷惑です。man-Csshsudo

影響を受ける各コマンドに松葉杖(設定など)を使用する必要がありますalias man='nocorrect man'が、明らかにこれが最善の解決策ではありません。私もそれが好きではなく、ただ代わりにCORRECT杖プラスを好む。CORRECT_ALLCORRECT

Zshはzsh 4.3.17 (x86_64-unknown-linux-gnu)Debianシードです。

修正する:これは私のものです。.zshrc http://pastebin.com/67mykgRv

答え1

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

以下を設定して、特定のコマンドに対する修正をカスタマイズできます。correctionsラベルを貼り、修正するかどうかをカスタマイズします。_correct~の一部matcher-listまたは。この設定は以下に関連しています。zstyle内蔵。

答え2

私が見るにはディストリビューションに何か抜けたようです。ほとんどのZSH実装には、コマンドとパラメータの場所に応じてインテリジェントに完了する複数の事前設定されたZSH完了設定が付属しています。たとえば、私のシステムではzsh 完了パック。正しくインストールされロードされると、ファイルを使用するのmanではなく、マニュアルページにあるものだけを使用して実行されます。sshホスト名のみを使用してくださいssh -l。これはシステムユーザー名を使用して実行されますが、ssh -l calebその後は次のように実行されます。ホスト名など

利用可能なzshパッケージとデフォルト設定が正しくロードされていることを確認する必要があります。質問にリストされているような標準コマンドに対して複数の手動オーバーライドを設定する必要はありません。

関連情報