다음 두 가지 기능을 고려하십시오.
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]
}