ZSH 剔除舊別名

ZSH 剔除舊別名

當我呼叫aliaszsh shell 時,我會得到一個別名列表。其中一些是需要的,有些則不是。我最初.alias在我的主目錄中創建了一個文件,並將其添加source $HOME/.alias到我的.zshrc.如何剔除不屬於我的來源檔案一部分的任何現有別名.zshrc? (大概我可以用 來一項一項地完成此操作unalias,但這看起來非常麻煩。)

答案1

unalias支援同時取消多個別名,因此您不必一一執行此操作。

我建議刪除所有別名並從~/.alias.

unalias ${(k)aliases} ${(k)galiases} ${(k)saliases}; source 

這需要zsh/parameter加載模組。檢查zmodload | grep parameter,加載zmodload zsh/parameter

參數aliases,galiasessaliases分別將常規別名、全域別名和後綴別名的名稱對應到它們的擴展。${(k)parameter}被替換為 的鍵parameter


如果由於某種原因無法載入模組,可以使用以下命令的輸出來解決該問題alias

unalias $(alias | cut -d = -f 1) ; source ~/.alias

如果您只想取消設定特定類型的別名,請alias -r用於常規別名(代替命令使用的別名)、alias -g全域別名和alias -s後綴別名。


如果您需要更頻繁地執行此操作,只需在您的~/.zshrc文件(或您從那裡獲取的其他文件)中定義函數即可

reload-aliases () {
    unalias ${(k)aliases}
    source ~/.alias
}

相關內容