我的别名存储在~/.zsh_aliases
中,并来自~/.zshrc
:
# Access custom aliases in the shell
[ -e "${HOME}/.zsh_aliases" ] && source "${HOME}/.zsh_aliases"
但是,在更改别名的名称时,我必须始终关闭当前的shell窗口并打开一个新窗口,以使更改生效。
Zsh可以在更改时自动重新加载别名,使其无法关闭shell窗口吗?
答案 0 :(得分:5)
您实际上并不需要关闭并重新打开终端,只需运行source ~/.zsh_aliases
(加载新的和更改的别名)或者exec zsh
(用新的替换当前的shell)工作也是。
如果您确实想要在修改时重新提供~/.zsh_aliases
,我建议您将以下内容添加到~/.zshrc
:
# File containing aliases;
ALIAS_FILE="${HOME}/.zsh_aliases
reload_aliases () {
# do nothing if there is no $ALIAS_FILE
[[ -e ALIAS_FILE ]] || return 1
# check if $ALIAS_FILE has been modified since last reload
# the modifier `(:A)` resolves any symbolic links
if [[ $LAST_ALIAS_RELOAD < $(stat -c %Y ${ALIAS_FILE}(:A)) ]]; then
# remove all aliases; optional!
# only do this if all of your aliases are defined in $ALIAS_FILE
# also affects aliases defined on the command line
unalias -m '*'
# load aliases
source $ALIAS_FILE
# update date of last reload
LAST_ALIAS_RELOAD=$(date +%s)
fi
}
# make reload_aliases to be run before each prompt
autoload -Uz add-zsh-hook
add-zsh-hook precmd reload_aliases
请注意,任何更改只会在新提示中提供。这意味着,如果您修改~/.zsh_aliases
,则需要在所有终端中至少按 Enter 一次,以使更改生效。
答案 1 :(得分:2)
我使用别名,因此: -
alias vialias='vi ~/.oh-my-zsh/custom/alias.zsh ; source ~/.oh-my-zsh/custom/alias.zsh'
当我运行vialias时,我编辑了别名,然后当我离开vi时,更改生效。
答案 2 :(得分:0)
为了简化接受的答案添加:
source ~/.zsh_aliases
在 plugins 部分下方的 ~/.zshrc
中。
然后在 ~/.zsh_aliases
中添加一个别名,如下所示:
alias f="exec zsh"
要刷新 zsh 和别名,请键入 f