При работе с git-репозиторием с несколькими ветвями, как мне изменить приглашение zsh, чтобы оно включало мою текущую активную ветку?
Используйте oh-my-zsh . Это автоматически обновляемая коллекция из нескольких десятков плагинов и тем, которые делают zsh
даже лучше, чем сейчас. Если вы уже установили git
, он автоматически активирует плагин git, и вы готовы к работе!
Используйте функцию vcs_info
в пользовательских вкладках zsh (входит в пакет zsh
). Быстрый старт:
autoload -Uz vcs_info
precmd () { vcs_info }
setopt prompt_subst
PS1="\$vcs_info_msg_0_$PS1"
Вероятно, вы захотите сделать вывод более красивым. Поскольку это вопрос личного вкуса, я отсылаю вас к примерам в документации.
Для тех, которые желают что-то более легкое, вот мой в большой степени измененный порт Zsh хинду подсказки удара, шел по умолчанию, когда я был на нем.
function parse_git_branch() {
# Speed up opening up a new terminal tab by not
# checking $HOME... which can't be a repo anyway
[ "$PWD" = "$HOME" ] && return
# Fastest way I know to check the current branch name
ref="$(command git symbolic-ref --short HEAD 2> /dev/null)" || return
echo " [$ref]"
}
prompt_gentoo_precmd() {
path_prompt="%B%F{blue}%1~$(parse_git_branch)"
PS1="$base_prompt$path_prompt $pre_prompt%# $post_prompt"
PS2="$base_prompt$path_prompt $pre_prompt%_> $post_prompt"
PS3="$base_prompt$path_prompt $pre_prompt?# $post_prompt"
}
prompt_gentoo_setup () {
base_prompt="%k%B%(!.%F{red}.%F{green}%n@)%m "
pre_prompt="%(0?..%F{yellow})%(1j.%%.)"
post_prompt="%b%f%k"
precmd_functions+='prompt_gentoo_precmd'
}