修正を完全にオフにしたり、修正を (コマンドのみを修正する) に制限したりせずに、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
に に修正されることを期待しています。 のホスト パラメータ、 の最初の引数などを修正しようとしますが、これは非常に煩わしいです。.zile
man
-C
ssh
sudo
alias man='nocorrect man'
影響を受けるコマンドごとに set などといった頼みの綱に頼らざるを得ませんが、明らかにこれが最善の解決策ではありません。また、私は だけよりもCORRECT
、頼みの綱プラスの方が好きです。CORRECT_ALL
CORRECT
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
マニュアルページにあるもののみを補完し、システムユーザー名で補完しますが、その後はホスト名などで補完するようになります。ssh
ssh -l
ssh -l caleb
利用可能な zsh パッケージと、デフォルト設定が適切にロードされているかどうかを調べる必要があります。質問に記載されているような標準コマンドに対して、手動で多数のオーバーライドを設定する必要はありません。