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