zsh와 oh-my-zsh의 설치와 사용법

2017-02-20

맥북에 내장된 터미널 앱배쉬(bash)라는 유닉스 셸을 사용한다. 그러나 요즘에는 많은 사람들이 iTerm2 + Zsh + Oh my Zsh!의 조합을 사용하는 쪽으로 넘어가고 있다. iTerm2는 앱, Zsh는 셸, Oh my Zsh!는 Zsh의 설정을 관리하는 프레임워크이다.

Installation

Install iTerm2

iTerm2 에서 다운로드 하거나, Homebrew 를 통해 다운 받는다.

$ brew cask install iterm2

Install Zsh

iTerm2를 열고, 먼저 Zsh가 설치되어 있는지 확인한다.

$ zsh --version
zsh 5.2 (x86_64-apple-darwin16.0)

기본 쉘을 zsh로 변경한다.

$ which zsh
/bin/zsh
$ chsh -s `which zsh`

설치가 완료되면 터미널을 재시작하면 기본 쉘이 zsh로 바뀐 것을 확인할 수 있다.

Install Oh my Zsh!

이제 Oh my Zsh를 설치한다. curl 또는 wget 으로 설치할 수 있다.

via curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
via wget
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

Settings

Themes

테마는 .zshrc 파일에서 설정할 수 있다.(참고로 rcRun command의 줄임말이다!) 다음 명령을 통해 설정 파일을 열어보면 기본 테마로 robbyrussell 이 설정되어 있는 것을 볼 수 있다.

테마 리스트를 참고하여 테마를 적용해보자. 참고로 나는 Pure 를 사용한다. 그리고 이건 개인적인 느낌인데, iTerm2는 내장 터미널 앱보다 색이 더 쨍하게 나와서 Oh my Zsh!의 테마가 더 돋보이는 효과가 있다.

image

.zshrc
...
ZSH_THEME="robbyrussell"
...

Plugins

플러그인은 주로 alias(명령어의 줄임말) 정의해놓은 것이 많다. 예를 들어 git status 대신 g s를 사용하는 것이다. git 명령어는 기본 플러그인으로 포함되어 있다. 다른 플러그인을 추가하려면 플러그인 리스트를 참고하여 .zshrc 파일에서 설정하면 된다.

.zshrc
...
plugins=(git bundler osx rake ruby)
...
tip

줄임말들을 쉽게 사용할 수 있도록 도움을 주는 플러그인 alias-tip도 있다.

custom alias 추가하기

Plugin에 없는, 자기만의 alias를 추가할 수도 있다. 예를 들어, 나는 typora 라는 마크다운 에디터를 사용하고 있는데, 터미널에서 typora 로 파일을 열려면 open -a typora xxx.md 라고 입력해야 한다. 이것을 줄여서 typora xxx.md 라고만 입력해도 typora로 열리도록 하고 싶다면 다음과 같이 .zshrc 에 추가하면 된다. .zshrc를 수정한 다음에는 터미널을 다시 시작해야 적용된다.

.zshrc
alias typora="open -a typora"

Usage

몇 가지 유용한 사용법들을 모아봤다.

iTerm2

새로운 탭

command + t

탭 이동

command + 숫자

화면 세로 분할

command + d

화면 가로 분할

command + shift + d

화면 포커스 이동

command + [ 또는 command + ]

현재 포커스 찾기

command + /

현재 화면 종료

command + w

zsh

이전 경로 모아보기
$ cd - #를 입력하고 tab 버튼를 눌러 원하는 숫자를 입력한다.
1 -- /etc
2 -- /Users
명령어 자동 완성
$ git - #를 입력하고 tab 버튼을 누른다.
--bare                    -- use $PWD as repository
--exec-path               -- path containing core git-programs
--git-dir                 -- path to repository
--help                    -- display help message
--html-path               -- display path to HTML documentation and exit
--info-path               -- print the path where the info files are installed
--literal-pathspecs       -- treat pathspecs literally, rather than as glob pa
--man-path                -- print the manpath for the man pages for this vers
--namespace               -- set the Git namespace
--no-pager                -- do not pipe git output into a pager
--no-replace-objects      -- do not use replacement refs to replace git object
--paginate            -p  -- pipe output into $PAGER
--version                 -- display version information
--work-tree               -- path to working tree
-C                        -- run as if git was started in given path
-c                        -- pass configuration parameter to command
명령어 스펠 체크

다음 명령어를 입력해야 이 기능을 사용할 수 있다.

$ setopt correct
$ gut status
zsh: correct 'gut' to 'git' [nyae]?