Zsh希望使用_前面的_自动更正命令

Joe*_*yan 70 zsh

我最近开始使用Zsh来获取我的Git状态等shell提示中的一些集成支持.

当我输入时:

 ruby -v
Run Code Online (Sandbox Code Playgroud)

为了确认我正在运行的ruby版本,Zsh询问我是否要将命令更改为_ruby.好之后在提示符处说不,并且命令按预期完成,在确认我的命令正确后,我会继续在提示符下得到问题.

我假设有一个完成文件或类似的东西.

谢谢

更新:

shell不再试图完成_ruby,它在关闭shell之后停止响应几次如何.

我尝试多次清理文件,但是有一个"opts"变量,长度为50行或更多,并且所有行都在一起运行,一些行超过150个字符.如果您还想看到它,也许我可以通过电子邮件向您发送附件.我真诚地为凌乱的帖子道歉.

Gil*_*il' 112

这是命令自动更正,由correct选项激活.它与完成无关.你看到了_ruby因为zsh认为没有ruby命令,它提供_ruby了最近的现有匹配.

如果你刚刚安装了ruby,可能之前zsh已经记住了可用命令列表,并且它并不总是试图查看命令是否出现在两者之间.在那种情况下,运行hash -rf.未来的zsh会话不会出现此问题,因为该ruby命令在启动时已经存在.

有时候,当你改变你的时候PATH,zsh会忘记一些哈希命令.该选项hash_listall有助于解决此问题.如上所述,如果您可以强制zsh刷新其命令缓存hash -rf.

  • 我有我的git-alias`git lg`这个问题,zsh认为应该是`git log`.有一个原因我称之为`lg`,因为它类似于`log`,因为它的功能类似!如何解决这个问题?我真的不想养成两次输入的习惯. (8认同)

man*_*ire 19

你可以做一个别名:

alias ruby='nocorrect ruby'

这就是我在zsh不断询问我输入时的意思.meteor,meteor因为自动更正仍然有用.


gpr*_*ant 14

我发现自动更正功能有时会让人讨厌.所以我在〜/ .zshrc中做,

DISABLE_CORRECTION="true"
Run Code Online (Sandbox Code Playgroud)

  • 更好的是,创建别名来打开和关闭自动更正,因为*大多数*时候,您需要它,特别是当您使用大量插件时。 (2认同)

ens*_*man 5

即使未安装该命令,我也遇到了同样的问题。

CORRECT_IGNORE我可以使用我的变量来解决它.zshrc

# OPTs to enable
setopt HASH_LIST_ALL
setopt CORRECT
# Zsh variable to determine what to ignore,
# in this case everything starting with _ or . 
CORRECT_IGNORE="[_|.]*"
Run Code Online (Sandbox Code Playgroud)

我希望它对您或任何遇到此问题的人有所帮助