Alias

無法讓 Zsh 不建議修復別名

  • September 15, 2011

我有一個別名

alias tdA='todo -a'

我在 Zsh 中得到以下資訊

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

如何讓 Zsh 不建議修復別名?

嘗試

% unsetopt 正確

我預設關閉拼寫更正。

如果有效,請將其添加到您的**.zshrc**文件中。

我已經使用 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 豐富的拼寫糾正功能。

祝你好運!

引用自:https://serverfault.com/questions/21521