考虑以下两个函数:
function slow_git_prompt_info() {
if [[ "$(command git config --get oh-my-zsh.hide-status 2>/dev/null)" != "1" ]]; then
ref=$(command git symbolic-ref HEAD 2> /dev/null) || \
ref=$(command git rev-parse --short HEAD 2> /dev/null) || return 0
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX"
fi
}
和:
function branch_name_only_git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
我想定义其他第三个函数是当被叫时,覆盖/定义主“命名空间”中的函数git_prompt_info()
以使其“指向”fast_git_prompt_info
例如:
# Pseudo-code:
function redefine_git_prompt_info() {
git_prompt_info = branch_name_only_git_prompt_info
}
这对于 Zsh 来说可能吗?如果是这样,怎么办?
答案1
您可以在任何地方定义函数。要链接另一个函数,只需使用相同的参数调用它即可。
redefine_git_prompt_info () {
git_prompt_info () { branch_name_only_git_prompt_info "$@"; }
}
如果branch_name_only_git_prompt_info
稍后重新定义,则调用redefine_git_prompt_info
将调用新定义。如果你想复制当前的定义,在 zsh 中,你可以轻松地做到这一点,这要归功于functions
大批。
redefine_git_prompt_info () {
functions[git_prompt_info]=$functions[branch_name_only_git_prompt_info]
}