次の2つの機能を考えてみましょう。
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"
}
私は定義したいその他3番目の機能は電話したとき、デフォルトの「名前空間」の関数を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]
}