Oh My ZSH+ iTerm2로 터미널을 더 강력하게

Harry The Great
해리의 유목코딩
9 min readJan 18, 2019

Update : 카탈리나 OS부터는 bash가 아닌 zsh이 기본 쉘이되었습니다.

ZSH란?

ZSH는 Z Shell이라고 불리는 우리가 일반적으로 부르는 본쉘의 확장팩(?)같은 쉘입니다. 이미 기본쉘로도 많은것이 가능하지만 Z Shell를 사용한다면 훨씬 더 강력하게 사용할 수 있습니다. Oh My ZSH는 Z Shell에 여러가지 플러그인이나 추가기능을 붙일 수 있도록 만들어진 플러그인입니다.

🤔 왜 사용해야할까?

그냥 어어어어어엄청 이쁘다라는 이유만으로도 충분하지만 사실 많은 기능이 있습니다. 대표적으로 아래와 같은 기능이 있습니다.

✅ 경로 자동추론

/u/l/b만 입력해도 /usr/local/bin이 자동으로 입력됩니다.

✅ 타이핑 교정

git add를 잘못입력하여 git adb로 입력한다면 자동으로 add일 수 있다고 알려줍니다.

✅ 명령어 추천

git a를 입력하고 탭을 누르면 a로 시작하는 명령어들을 추천해줍니다. 이외에 아래와 같은 플러그인을 추가하여 자동완성을 할 수 있습니다.

✅ 다양한 플러그인

다양한 플러그인을조합할 수 있습니다. 위처럼 git과 docker의 경우 명령어를 자동으로 추천해줍니다.

💻 설치하기

매뉴얼하게 설치할수도 있지만 되도록 Mac의 패키징 매니저툴인 brew를 이용해 설치하기를 권장드립니다. 자세한 설치법은 하나하나 설명드리겠습니다.

iTerm2 설치

링크를 통해 접속하여 iterm2를 설치해줍니다. Iterm2는 맥의 기본 터미널기능을 확장하여 커스텀 단축키나 스크립트, 화면 나누기등 다양한 기능을 제공합니다.

iTerms2 테마 설치하기(옵션)

iTerm2-Color-Schma에 접속하면 iTerm2에서 사용가능한 다양한 컬러 스키마를 다운받을 수 있습니다. 다운을 받은 후 iTerm2에서 cmd + ,를 눌러 환경설정을 띄운 후 Profile -> colors로 들어가면 아래와같은 화면을 볼 수 있습니다.

하단에 Color Preset라는 dropbox를 클릭, 하단 imports를 누른 후

다운받은 폴더 schemes의 테마중 원하는걸 선택합니다. 저처럼 선택장애가 있으시다면… 모든 스키마를 선택한 후 확인을 눌러 모두 import 시킨 후 하나하나 바꿔가며 선택해봅니다. import하는 테마가 많다면 다소 시간이 소요될 수 있습니다.(저는 3024 Night를 선택했습니다)

brew 설치

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

iTerms2 터미널 복사하여 붙여넣어주세요.

zsh설치

brew install zsh

Oh my ZSH설치

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

설치하는게 너무많아(…) 조금 정리를 하자면

  • iTerm2 — 맥의 터미널 보조 프로그램
  • Homebrew(brew) —맥에서 라이브러리나 플러그인등을 쉽게 설치하게 도와주는 패키징 매니저
  • ZSH — 쉘의 확장판
  • Oh My ZSH — ZSH를 더 쉽게 사용해주는 플러그인

더 강력하게 만들기💡

요기까지만와도 이미 터미널이 상당히 이쁘게 변해있을것입니다. 하지만 더 강력하게 만들기 위해선 몇가지 과정이 더 필요합니다.

agnoster 테마 설치

agnoster 테마적용시 화면

agnoster테마는 현재 디렉토리에서 Git의 상태를 알려줍니다. 이 기능은 보이는것보다 아주 강력해서 현재 마스터브랜치인지 개발브랜치인지 혹은 커밋은 까먹고 하지 않았는지 등을 자연스래 알려줍니다.

zshrc파일 수정하기

vi ~/.zshrc 또는 opne ~/.zshrc

위 명령어를 통해 설정파일에 진입합니다. 위쪽에서 5~15번째줄쯤 ZSH_THEME=”robyrussell”라고 되어있는 부분이 있습니다. 이부분을 agnoster로 수정합니다. agnoster는 기본테마이기때문에 추가적인 설치는 필요없습니다. 그 다음 저장을해준 후 터미널을 나온다음 아래 명령어로 zshrc파일을 적용시켜줍니다.

source ~/.zshrc

그럼 폰트가 깨지며 괴이해지는 모습을 볼 수 있습니다😔 일반적으로 powerline이라는 폰트를 설치하길 권장하지만 저는 D2 코딩폰트를 사용하길 권장드립니다. 참고로 코딩용 폰트이 중요성은 이 링크를 통해 읽어볼 수 있습니다.

https://github.com/naver/d2codingfont에 들어가 폰트를 다운받은 후 최신버전을 설치해줍니다.

아까와 마찬가지로 cmd + ,를눌러 환경설정에 들어간 후 상단 Profile -> Text로 진입한다음 change Font를 누른 후 D2Coding폰트를 선택합니다. 폰트가 너무 작아보인다면 13pt를 해도 좋습니다.

3024Night과 D2를 적용한다면 터미널이 몰라보게 이뻐집니다. 불필요한 몇가지가 더 있는데 이름부분에 계속 나오는 macbook-pro부분도 지워보겠습니다. 조금전 ~/.zshrc파일로 다시들어가 하단에 아래와같이 추가해줍니다.

prompt_context() {
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
prompt_segment black default "%(!.%{%F{yellow}%}.)$USER"
fi
}

이렇게하면 사용자 이름만 변경되고 아무것도 나오게하고싶지 않다면 중괄호안의 내용을 지우고 {}로만 놔둡니다.

New Line 적용하기(옵션)

터미널의 뉴비라면 이정도까지만와도 사실 충분히 고통받고있기때문에 익숙하신분만 추천드립니다. 현재 터미널의 상태를보면 이미 많은 텍스트 내용이 있기때문에 명령어를 칠경우 화면에서 벗어나는 경우가 많습니다 때문에 New Line을 적용해보겠습니다.

newline을 적용하면 명령어가 아래라인부터 타이핑할 수 있습니다.

agnoster테마를 적용한것을 기준으로하면

vi ~/.oh-my-zsh/themes/agnoster.zsh-theme
//or
open -a TextEdit ~/.oh-my-zsh/themes/agnoster.zsh-theme

theme파일을 엽니다.

build_prompt() {
RETVAL=$?
prompt_status
prompt_virtualenv
prompt_context
prompt_dir
prompt_git
prompt_bzr
prompt_hg
prompt_newline //이부분을 추가 꼭 순서 지켜서
prompt_end
}

하단 buld_prompt를 찾아 꼭 prompt_end 위에 prompt_newline을 추가합니다.그다음 아래 코드를 추가합니다.

prompt_newline() {
if [[ -n $CURRENT_BG ]]; then
echo -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR
%{%k%F{blue}%}$SEGMENT_SEPARATOR"
else
echo -n "%{%k%}"
fi

echo -n "%{%f%}"
CURRENT_BG=''
}

Syntax Hightlight 적용하기 (옵션)

Syntax Hightlight기능은 유용합니다. 우선 사용할 수 없는 명령어라면 초록색으로 하이라이팅되지않습니다.

위 이미지처럼 open을 타이핑하면 초록색으로 신택스가 하이라이팅되지만 없는 명령어인 opena를 치면 빨간색(저는 테마설정상 분홍색)으로 표시됩니다.

//brew를 통해 설치해줍니다.
brew install zsh-syntax-highlighting
//플러그인을 적용합니다.
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

IDE 터미널에도 적용하기(옵션)

저처럼 젯브레인 계열의 터미널을 사용하고 계신다면 터미널에는 적용안되어있는 모습을 볼 수 있습니다.

이때 Preferences(cmd+,)에서 Tools -> Terminal에 가신 후 Shell path를 /bin/zsh로 잡아주세요. 현재 iTerms2에서 사용하는 컬러스키마와 맞추고싶다면 사용하고있는 컬러스키마이름 + Jetbrain을 검색하시면 많은경우 다운받을 수 있습니다. 저는 사용하고있는 3042테마를 찾아 다운로드했습니다.

Editor -> color Scheme -> Console Colors에 진입한 후

import Schema를 누릅니다. 그 후 다운받은 테마를 누른 후 설정해줍니다.

마치며

개발에서 생산성은 가장 중요한 요소입니다. 많이들 생산성 향상을 알고리즘 공부나 애자일, 도메인 드리븐 개발 등등 여러 요소에서 찾기도 하지만 이렇게 툴과 단축키도 무시하지 말아야할 요소중 하나인것같습니다. 👍

추가로 ZSH와 관련한 다른 포스트입니다.

--

--

Harry The Great
해리의 유목코딩

Android & IOS Developer 😀 미디움 이외에 스니펫이나 디버그노트로 활용하는 https://www.harrymikoshi.com/ 블로그도 운영하고있습니다.