如何部分禁用 zsh 的自动更正

Sho*_* Ya 48 zsh autocorrect

zsh 的自动更正功能对我很有帮助,但它并不总是给出正确的结果。

~$ sudo vim somefile
zsh: correct 'vim' to '.vim' [nyae]? 
Run Code Online (Sandbox Code Playgroud)

然而,我想要的是像一个never选项,可以阻止它永远纠正这些命令。

我怎样才能做到这一点?

Soz*_*Soz 59

您可以通过在您的 .zshrc 中使用前缀“nocorrect”来通知 zsh 它不应该对特定命令进行自动更正(例如:http : //dzen.geekmode.org/wiki/wiki.cgi/-main/ZshConfiguration) :

alias vim='nocorrect vim' 
Run Code Online (Sandbox Code Playgroud)

或者——如果这个白名单过程变得太令人沮丧——你可以使用 .zshrc 中的以下内容完全关闭自动更正。

对于较新版本的 zsh,请使用:

 unsetopt correct
Run Code Online (Sandbox Code Playgroud)

对于旧版本的 zsh 使用:

 unsetopt correct-all
Run Code Online (Sandbox Code Playgroud)

修正补充:这是之前关于这个主题的讨论 - zsh Correctall 功能的例外?

  • 虽然这适用于 vim 命令开始时的情况,但不适用于诸如“bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>”之类的命令。我为 rspec 添加了一个别名。有小费吗? (3认同)

Pau*_*tto 29

我想我找到了更好的答案。

我不确定版本和诸如此类的东西,但它似乎correct_all应该更正命令参数,而correct只更正命令,因此消除了这种烦人的行为。

这是我的配置文件中的内容

unsetopt correct_all  
setopt correct
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用 oh-my-zsh,请确保将这两行放在 `source $ZSH/oh-my-zsh.sh` 之后,否则它不起作用。看来 oh-my-zsh 会重置选项正确的_all。 (2认同)