无法让 Zsh 不建议修复别名

无法让 Zsh 不建议修复别名

我有一个别名

alias tdA='todo -a'

我在 Zsh 中得到以下内容

tdA          
zsh: correct 'tdA' to 'tda' [nyae]? 

如何让 Zsh 不建议修复别名?

答案1

尝试

% unsetopt 正确

我默认关闭拼写更正。

如果有效,请将其添加到您的.zshrc文件。

答案2

我已经使用 zsh 大约 18 年了,我必须说我不喜欢公认的解决方案。原因如下:

您需要找出问题的根源 - 确定为什么提供“tda”作为更正选项。您所做的就是完全禁用全局拼写更正。这会在您试图摆脱战术问题时拒绝一些非常好的功能。这就像想通过引爆炸药杀死您家中的苍蝇,只是因为您懒得弄清楚苍蝇拍在哪里:它可能会解决问题,但您却要付出很多代价。:)

在您确定 zsh 的当前拼写校正配置之前,您应该考虑将特殊 shell 变量 $CORRECT_IGNORE 的值设置为“tda”。

以下是 zsh 手册页中的条目:

   CORRECT_IGNORE
          If set, is treated as a pattern during spelling correction.  Any
          potential  correction  that matches the pattern is ignored.  For
          example, if the value is `_*' then completion functions  (which,
          by  convention,  have  names  beginning  with `_') will never be
          offered as spelling corrections.  The pattern does not apply the
          correction  of  file names, as applied by the CORRECT_ALL option
          (so with the example just given files beginning with `_' in  the
          current directory would still be completed).

这应该可以帮助您确定“tda”的实际来源。

另请注意,您可以使用命令前修饰符“nocorrect”来禁用每个命令的拼写更正。您可以使用它来做一些有点黑客但有效的事情:

alias tdA="nocorrect tda"
alias tda="todo -a"

别名只是 zsh 替换到命令行中的标记,并且这些替换会被重新扫描以查找其他别名。因此上述操作应该可以正常工作。

希望这些替代方案能为您提供更有选择性的方法来解决您的问题,同时仍然让您受益于 zsh 丰富的拼写纠正功能。

祝你好运!

相关内容