虽然我喜欢 zsh,并且发现它的拼写纠正很有用,但它纠正了一些错误,这很烦人。明显地不应该被纠正。例如,我刚刚执行
mv iso_ iso
它回复了
zsh: correct 'iso' to 'iso_' [nyae]?
想一想。将“iso”更正为“iso_”意味着我正在尝试执行
mv iso_ iso_
这永远都说不通。因此,这确实是 zsh 的一个设计缺陷,应该全面纠正。但是,鉴于它还没有被纠正(至少在我使用的版本中),而且不太可能被纠正,是否有一些设置可以纠正它?我更喜欢一种非笨拙的修复方法。mv
例如,的别名就是笨拙的。
答案1
有一种笨拙的方法可以解决这个问题。要纠正mv
、cp
和的行为mkdir
,请将其添加到您的 .zshrc 文件中:
alias mv='nocorrect mv'
alias cp='nocorrect cp'
alias mkdir='nocorrect mkdir'
由于多种原因,这不是一个理想的解决方案,其中最重要的一个原因是,有时您可能会遇到以下情况:做想要mv
命令的拼写更正。例如,如果您尝试执行:
mv directory_a/sub/sub/some_file directory_b/sub/sub/
但你拼错了其中一个目录并最终输入
mv directory_a/sub/sub/some_file directry_b/sub/sub/
拼写纠正可能会有帮助。 (这显然是一个人为的例子,但你明白了。)
答案2
correct_all
好吧,如果您不喜欢该选项的功能,请不要使用它。
FWIW,默认情况下未设置。网上有一个流行的配置(我不会说是哪个),出于某种原因,它认为为每个人设置该选项是一个有趣的想法......但是,它对于许多应用程序来说没有意义。它使每一个命令行参数需要进行文件名拼写纠正...这太疯狂了。
长话短说:只有setopt correct
并且不是 setopt correctall
。
如果您需要有关文件名拼写的帮助,zsh 的完成系统可以帮助您完成它_approximate
和_correct
完成器。详细信息可以在zshcompsys(1)
手册页中找到。