Zsh에는 Git용 탭 자동완성 스크립트가 들어 있다.
.zshrc
파일에서 단순히 autoload -Uz compinit && compinit
명령을 실행하면 된다.
Zsh은 Bash보다 더 강력하다.
$ git che<tab>
check-attr -- display gitattributes information
check-ref-format -- ensure that a reference name is well formed
checkout -- checkout branch or paths to working tree
checkout-index -- copy files from index to working directory
cherry -- find commits not merged upstream
cherry-pick -- apply changes introduced by some existing commits
Zsh은 선택지가 여러 개일 때 단순히 이름만 보여주지 않는다. 간단한 설명도 함께 보여주고 탭 키로 고를 수 있다. Git 명령어만이 아니라 아규먼트도 자동완성해준다. 게다가 저장소의 리모트나 Refs 이름과 파일 이름 같은 것도 자동완성한다. Zsh은 아는 모든 것을 제시한다.
Zsh에는 vcs_info
라는 프레임워크가 포함돼 있다. 여기에는 현재 사용하는 VCS정보가 들어있다.
~/.zshrc
파일에 아래 라인을 추가하면 오른쪽 프롬프트에 브랜치 이름이 표시된다.
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
RPROMPT=\$vcs_info_msg_0_
# PROMPT=\$vcs_info_msg_0_'%# '
zstyle ':vcs_info:git:*' formats '%b'
쉘에서 Git 저장소 디렉토리로 이동하면 터미널 오른쪽에 현 브랜치 이름을 아래와 같이 보여준다. (물론 주석 처리한 것만 돌리면 왼쪽 프롬프트에서도 잘 된다.)
vcs_info에 대한 자세한 정보는 zshcontrib(1)
메뉴얼 페이지를 보거나
http://zsh.sourceforge.net/Doc/Release/User-Contributions.html#Version-Control-Information에서 확인한다.
vcs_info말고 Git에 들어 있는 git-prompt.sh
를 직접 수정해서 사용해도 된다. 자세한 내용은 https://github.com/git/git/blob/master/contrib/completion/git-prompt.sh에서 확인한다.
git-prompt.sh
는 Bash와 Zsh 모두 호환된다.
Zsh의 강령함을 이끌어 내는 프레임워크가 있다. "oh-my-zsh"이 대표적인데 https://github.com/robbyrussell/oh-my-zsh에서 찾을 수 있다. Git 탭 자동완성도 "oh-my-zsh" 플러그인을 사용하면 되고 브랜치 이상의 정보를 보여주는 다양한 프롬프트 테마도 제공한다. oh-my-zsh 테마.은 프롬프트 테마를 적용한 모습이다.