Zsh 希望使用_before 自动更正命令

我最近才开始使用 Zsh,在我的 Git 状态的 shell 提示中提供一些集成支持。

当我输入:

 ruby -v

为了确认正在运行的 Ruby 版本,Zsh 询问我是否要将命令更改为 _ ruby。在确认命令正确后,在提示符处说不,命令按预期完成后,我继续在提示符处得到问题。

我想应该有完成文件之类的吧。

谢谢

更新:

Shell 不再试图完成 _ ruby,它在关闭 shell 几次之后就停止响应了。

我多次尝试清理文件,但是有一个“ opts”变量,它有50行或更长,所有行都一起运行,有些行超过150个字符。如果你还想看的话,我可以给你发个附件。 我真诚地为这个混乱的职位道歉。

19306 次浏览

这是命令自动校正,由 correct选项激活。这和完成没有任何关系。您之所以看到 _ruby,是因为 zsh 认为没有 ruby命令,并且它将 _ruby作为最接近的现有匹配。

如果您刚刚安装了 ruby,那么 zsh可能已经记住了之前的可用命令列表,并且它不会总是尝试查看这两个命令之间是否出现了命令。在这种情况下,运行 hash -rf。将来的 zsh 会话不会有这个问题,因为 ruby命令在它们启动时就已经存在了。

有时,当您更改 PATH时,zsh 会忘记一些散列命令。选项 hash_listall有助于避免这种情况。如上所述,如果您可以强制 zsh 使用 hash -rf刷新其命令缓存。

我发现自动更正功能有时候很烦人,

DISABLE_CORRECTION="true"

你可以用化名:

alias ruby='nocorrect ruby'

当 zsh 一直问我键入 meteor时是否指的是 .meteor时,我就是这么做的,因为自动纠错有时仍然很有用。

不久前,在一次更新之后,我启用了我不想启用的 指令自动更正。如果同样的事情发生在你身上,你想要恢复它,在 ~/. zhrc文件中,你会得到:
# Uncomment the following line to enable command auto-correction.
ENABLE_CORRECTION="false"

或者按照下面的方式评论:
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"

请注意,在我的 zsh (macOS 版本5.7.1)上,DISABLE _ CORRECTION 不起作用。

我在我的.zhrc 文件中看到了以下两行,然后我将它们注释掉了

setopt CORRECT
setopt CORRECT_ALL

我就是这么想的。

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

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

# 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="[_|.]*"

我希望这对你或者任何有这个问题的人都有帮助