我有一个别名
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 丰富的拼写纠正功能。
祝你好运!