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

时间:2010-08-09 05:01:50

标签: zsh

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

当我输入时:

 ruby -v

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

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

谢谢

更新

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

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

6 个答案:

答案 0 :(得分:111)

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

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

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

答案 1 :(得分:19)

您可以创建别名:

alias ruby='nocorrect ruby'

当我输入.meteor时zsh一直问我是否意味着meteor因为自动更正仍然有用时,我就这么做了。

答案 2 :(得分:14)

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

DISABLE_CORRECTION="true"

答案 3 :(得分:2)

在更新后的某个时候,我启用了 命令自动更正 ,这是我不想要的。如果您遇到同样的情况并且想要还原它,请在〜/ .zshrc 文件中进行以下操作:
<style type="text/css"> ul { margin: 0; padding: 0; } li { list-style-type: none; } #nav { display: table; table-layout: fixed; text-align: center; } #nav li { display: table-cell; width: 25%; padding-right: 1px; height: auto; vertical-align: bottom; } #nav a { display: block; min-height: 100%; padding: 12px 50px; background-color: #222; color: white; border-radius: 6px 6px 0 0; } .logoutLblPos{ position:fixed; right:10px; top:5px; } </style> <body> <div class="container"> <div class="row"> <div class="col-sm-5 col-sm-push-3 col-xs-4 col-xs-push-2"> <h1 class="text-center" style="font-family:Colonna MT;font-size:50px;color:ForestGreen ;">Welcome</h1> <p class="lead text-center" style="font-size:20px;color:DarkSalmon;"><i>"This is caption"</i></p> <label class="logoutLblPos"> <span class="glyphicon glyphicon-user" style="height:50px;width:20px"></span> User <input name="submit2" type="submit" id="submit2" value="log out"> </label> <ul id="nav"> <li><a href="#">Home</a></li> <li><a href="#"> tab2</a></li> <li><a href="#">tab3</a></li> <li><a href="#">tab4</a></li> </ul> </div> </div> </div> </div>
# Uncomment the following line to enable command auto-correction.

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

答案 4 :(得分:0)

请注意,在我的zsh(macOS上的版本5.7.1)上,DISABLE_CORRECTION无法正常工作。

我在.zshrc文件中看到了以下两行,然后将其注释掉了

setopt CORRECT
setopt CORRECT_ALL

为我做到了。

答案 5 :(得分:0)

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

我可以使用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="[_|.]*"

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