Some years ago I posted the Gentoo Zsh prompt to make it available to every Zsh user, not only Gentoo users. Some days ago I wanted some Git features in my shell. I saw some nice prompt features in the last years when using Git so I wanted that too. I didn't found a nice prompt so I decided to write my own. I installed oh-my-zsh and created my own theme. It is based on the original Gentoo Zsh prompt and the Kolo oh-my-zsh theme.

Below you see an example session interacting with a Git repository:

hanez.zsh-theme.png

Nice, isn't it?

I love minimal prompts with all the information I need. Since I am using xterm it is compatible to it. I love colors... ;)

You can see here that the [master*] part is not shown when not in a Git managed directory. My $HOME is managed by Git so I always have the repository information available, but not as root.

The code is found in my fork of the oh-my-zsh repository. Take a look under themes/, there is a file named hanez.zsh-theme. You can add this file to any oh-my-zsh installation from the upstream repositories or just add the content of the file to your .zshrc file. I use this fork only for providing my theme.

All of my custom Zsh stuff is found in my $HOME repository at GitHub.

Update: I replaced the dots which are showing the Git status with some asterisk to make the prompt become compatible to more terminal emulators. Some bugs are fixed too.

hanez.zsh-theme.update.png

[Update]: Here is the code:

autoload -Uz vcs_info  zstyle ':vcs_info:*' stagedstr '%F{green}*' zstyle ':vcs_info:*' unstagedstr '%F{yellow}*' zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{11}%r' zstyle ':vcs_info:*' enable git svn theme_precmd () {     if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]] {         zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{green}]'     } else {         zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{red}*%F{green}]'     }      vcs_info } setopt prompt_subst if [ "$USER" = 'root' ] then PROMPT='%B%F{red}%m%F{green}${vcs_info_msg_0_} %F{blue}%c #%b%f ' else PROMPT='%B%F{green}%n@%m${vcs_info_msg_0_} %F{blue}%c #%b%f ' fi autoload -U add-zsh-hook add-zsh-hook precmd  theme_precmd

Permalink: https://hanez.org/2015/06/26/gentoo-zsh-prompt-with-git-features/

Comments