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

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

zsh 的自动更正功能对我来说非常有用,但它并不总是能给出正确的结果。

~$ sudo vim somefile
zsh: correct 'vim' to '.vim' [nyae]? 

但我想要的是类似绝不可以停止它永远纠正类似命令的选项。

我怎样才能做到这一点?

答案1

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

alias vim='nocorrect vim' 

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

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

 unsetopt correct

对于旧版本的 zsh 使用:

 unsetopt correct-all

修正后补充:这是关于这个主题的先前讨论 -zsh correctall 功能有例外吗?

答案2

我认为我找到了更好的答案。

我不确定版本和其他东西,但它似乎correct_all应该是正确的命令参数,而correct只纠正命令,因此消除了这种令人讨厌的行为。

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

unsetopt correct_all  
setopt correct

答案3

rspec我在使用via时遇到了问题zeus,我想保留自动更正设置,因为它们似乎对其他所有设置都有效除了 rspec,所以我从未尝试过上述任何其他建议。

我所要做的就是nocorrect宙斯本身:

别名 zeus='nocorrect zeus'

答案4

如果你使用 oh-my-zsh:

unsetopt 正确_全部

将禁用所有自动更正功能。

为异常设置别名(参见下面的链接)对我来说不起作用。

https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/correction.zsh

相关内容