![如何部分禁用 zsh 的自动更正](https://linux22.com/image/1319187/%E5%A6%82%E4%BD%95%E9%83%A8%E5%88%86%E7%A6%81%E7%94%A8%20zsh%20%E7%9A%84%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%AD%A3.png)
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