我已经启用校正(我不会把它自动更正在zsh中通过启用特别是因为这个问题)setopt correct
我.zshrc
。
现在,当我输入dtae
终端时,我得到:
dtae
zsh: correct 'dtae' to 'date' [nyae]? y
Tue Mar 31 11:39:31 CEST 2015
Run Code Online (Sandbox Code Playgroud)
在这一点上,我希望 zsh 记住我的决定。所以下次我输入时dtae
它应该自动更正为date
[1]。但是,这并没有发生,zsh 再次询问我该怎么做:
dtae
zsh: correct 'dtae' to 'date' [nyae]?
Run Code Online (Sandbox Code Playgroud)
[1] 当然,除非当时存在实际的dtae
命令或别名。
更新:
我设法修改了 zsh 源代码(文件utils.c
,函数spckword
)以创建一个自定义文件,其中包含通过调用 zsh 的“正确”功能自动创建的别名:
原来的:
if (x == 'y' || x == ' ' || x == '\t')
{
*s = dupstring(best);
if (hist)
hwrep(best);
}
Run Code Online (Sandbox Code Playgroud)
修改的:
if (x == …
Run Code Online (Sandbox Code Playgroud) 我有 zsh 和 oh-my-zsh 的默认值,但无法弄清楚如何关闭我经常使用的特定命令的自动更正,例如:sudo mc 或 sudo gem update。问题是我有.mc
目录和.gem
目录并且 zsh 建议自动更正(zsh: correct 'mc' to '.mc' [nyae]
)。
通常我想配置 zsh 以便sudo [smth]
不被视为用于自动更正的单独命令(它不是)。对此有什么解决办法?
我有三个文件夹叫做ProjectA
,ProjectB
和ProjectC
. 当我tab
-completecd
到cd Project
并按Enter,它选择ProjectC
。我发现其他类似案例也是如此;它默认为词典顺序的最后一个(但这也可能是最近更改/添加的)。
这是预期的默认行为cd
,还是我在这里不小心设置了一些东西?
我正在使用 bash 4.3 运行 OSX 10.10.3。
我喜欢自动zsh
更正,但它不断询问我不需要更正的事情。
dzil build
zsh: correct 'build' to '.build' [nyae]? %
Run Code Online (Sandbox Code Playgroud)
.build
是由build
(或运行该操作的任何其他命令创建的目录,因此dzil .build
总是错误的,并且dzil build
总是正确的。有什么方法可以将其传达给自动更正系统?
我有以下完成:
zstyle ':completion:*' completer _complete _approximate
Run Code Online (Sandbox Code Playgroud)
因此,如果我输入错误并点击 TAB,我将看到一个包含更正命题(我喜欢的)的列表,同时拼写错误的单词将在命令行中自动更改为第一个命题(我不喜欢的)。那么如何摆脱这种在线自动校正呢?我只想要可能更正的列表,但命令行应该坚持使用原始文本。
我喜欢 ZSH 的自动更正功能,但有时它会妨碍:
cli
目录,当我尝试运行npm run ci
.docker run -v /some/dir:/var/www
,它将尝试自动更正为/some/dir/var/www
现在,我不希望关闭自动更正或前缀的命令nocorrect
。我想要的更多是围绕正常建议的“学习”自动更正,计算我对建议说“不”的次数,如果我已经说“不”3 次,则不再建议它。我这样的事情可能吗?
这并不完全是重复的,因为我希望正确的_all 仍然有效。我确实不时搞砸了争论,ZSH 很乐意帮助我。当我在我的主目录中并且我想用类似的东西管理 sshdsystemctl reload ssh
或者service ssh start
它总是问我是否要更正到.ssh
. 我通常执行我的工作,$HOME
所以这会很烦人。我已经尝试过alias ssh='nocorrect ssh'
并且alias ssh='nocorrectall ssh'
(我认为它没有任何作用)。关于如何解决这个问题的任何想法?
虽然我喜欢 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
例如, 的别名很笨拙。
我不记得有什么 UNIX 命令可以让您记住如何正确编写命令。
让我们假设我说的命令叫做 MISPELL
所以运行 MISPELL 将产生以下输出:
$ MISPELL chlmod
Run Code Online (Sandbox Code Playgroud)
输出:
chmod
Run Code Online (Sandbox Code Playgroud) 我已经看到并阅读过有关 zsh 提供命令输入自动更正的内容。例如,如果我输入 sl,它应该问我类似“您的意思是 ls 吗?”之类的问题。但是,在我的 zsh 中,这不会发生。它只是给出一个错误。有没有什么原因,可能是某些设置?(是的,我确定我运行的是 zsh 而不是 bash 之类的)
autocorrection ×10
zsh ×8
oh-my-zsh ×2
alias ×1
autocomplete ×1
bash ×1
cd-command ×1
command-line ×1
line-editor ×1