ZSH 剔除旧别名

ZSH 剔除旧别名

当我在 zsh shell 中调用时alias,我会得到一个别名列表。其中一些是需要的,有些则不需要。我最初.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

参数aliasesgaliasessaliases分别将常规、全局和后缀别名的名称映射到它们的扩展。${(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
}

相关内容