Git
Chapters ▾ 2nd Edition

A1.5 Appendix A: 다양한 환경에서 Git 사용하기 - Zsh

Zsh

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 저장소 디렉토리로 이동하면 터미널 오른쪽에 현 브랜치 이름을 아래와 같이 보여준다. (물론 주석 처리한 것만 돌리면 왼쪽 프롬프트에서도 잘 된다.)

`zsh` 프롬프트 설정.
Figure 163. zsh 프롬프트 설정.

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 테마.은 프롬프트 테마를 적용한 모습이다.

oh-my-zsh 테마.
Figure 164. oh-my-zsh 테마.