在使用 zsh 的 `mv` 命令时,是否有一种(最好是非笨拙的)方法来避免拼写更正

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例如, 的别名很笨拙。

Fra*_*eck 6

好吧,correct_all如果您不喜欢它的功能,请不要使用该选项。

FWIW,默认情况下未设置。网络上有一个流行的配置(我不会说是哪个),出于某种原因,它认为为每个人设置该选项是一个有趣的想法……然而,对于许多应用程序来说,它没有意义。它使每个命令行参数都受到文件名拼写更正的影响......这太疯狂了。

长话短说: Onlysetopt correctNOT setopt correctall

如果您需要文件名拼写方面的帮助,zsh 的补全系统可以帮助您解决其_approximate和补_correct全程序。详细信息可以在zshcompsys(1)手册页中找到。


ico*_*ast 5

有一个笨拙的方法来解决这个问题。要纠正的行为mvcp以及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)

拼写更正可能会有所帮助。(这显然是一个人为的例子,但你明白了。)