ko-dos ответит отлично, но я предпочитаю немного более осведомленную о git подсказку, чем ту, которую он использует. В частности, мне нравятся помеченные, неотмеченные и неотслеживаемые уведомления о файлах в самой подсказке. Используя его ответ и примеры zsh vcs_info, я придумал следующее:
setopt prompt_subst
autoload -Uz vcs_info
zstyle ':vcs_info:*' stagedstr 'M'
zstyle ':vcs_info:*' unstagedstr 'M'
zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' actionformats '%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
zstyle ':vcs_info:*' formats \
'%F{5}[%F{2}%b%F{5}] %F{2}%c%F{3}%u%f'
zstyle ':vcs_info:git*+set-message:*' hooks git-untracked
zstyle ':vcs_info:*' enable git
+vi-git-untracked() {
if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \
[[ $(git ls-files --other --directory --exclude-standard | sed q | wc -l | tr -d ' ') == 1 ]] ; then
hook_com[unstaged]+='%F{1}??%f'
fi
}
precmd () { vcs_info }
PROMPT='%F{5}[%F{2}%n%F{5}] %F{3}%3~ ${vcs_info_msg_0_} %f%# '
Это создает приглашение, имитирующее раскрашенный вывод git status -s
(который можно настроить в файле .gitconfig
). Картина, пожалуй, самая полезная здесь:
По сравнению с git status -s
:
Если вам не нравится цветной вывод или вы предпочитаете какой-либо другой символ или конструкцию приглашения, просто измените значения stagedstr
, unstagedstr
и hook_com[unstaged]
в приведенном выше коде.