devAlice
← Mac

Mac 터미널 — iTerm2 vs WezTerm vs Ghostty + zsh + Starship 셋업

맥 기본 Terminal.app을 떠나는 세 가지 옵션 비교 + 가장 빨리 안정화되는 zsh + Starship 환경.

맥 기본 Terminal.app은 동작은 하지만 분할·검색·렌더링·구성 가능성에서 다른 옵션들에 밀린다. 이 가이드는 iTerm2 · WezTerm · Ghostty 세 가지를 비교하고, 가장 빨리 안정적인 환경(WezTerm + zsh + Starship + 모듈 4종)을 만든다.

TL;DR

옵션강점약점추천
WezTerm (권장)Lua 설정 / GPU 가속 / cross-platformLua 학습 곡선1인 개발자, 코드로 설정 선호
iTerm2가장 성숙 / 검색·분할·세션 강력설정 GUI 미궁기능 풍부함 우선
Ghostty빠름 / 단순 / 1.0 안정신생, 일부 기능 부족최신·미니멀 선호

1. 옵션 비교

iTerm2

가장 오래된 macOS 전용 터미널. 분할(⌘D), 인스턴트 리플레이, 검색, 트리거(텍스트 매칭 시 액션), 세션 자동 복원 등 풍부.

WezTerm

Rust로 작성, Lua 설정, GPU 가속, cross-platform (Mac/Linux/Win). 키바인딩·테마·multiplexing 모두 Lua 한 파일에. 재현 가능.

Ghostty

2024년 1.0 안정. 빠름, GPU 가속, 매우 단순한 설정. iTerm2/WezTerm에 비해 기능은 적지만 일상 사용엔 충분.

권장: WezTerm

"설정을 코드로 관리하고 새 머신에서 한 번에 복원하고 싶다" 시나리오에 압도적. dotfiles 관리와 자연스럽게 통합. 본 가이드는 WezTerm 기준.

2. WezTerm 설치

brew install --cask wezterm

첫 실행 → 기본 셸이 zsh (Mac 기본). 화면 정상 표시되면 OK.

3. WezTerm 설정 — ~/.config/wezterm/wezterm.lua

mkdir -p ~/.config/wezterm && nvim ~/.config/wezterm/wezterm.lua:

local wezterm = require 'wezterm'
local config = wezterm.config_builder()
 
-- 폰트
config.font = wezterm.font_with_fallback({
  'JetBrainsMono Nerd Font',
  'Hiragino Sans',  -- 한글 fallback
})
config.font_size = 13.0
 
-- 컬러스킴
config.color_scheme = 'Catppuccin Mocha'  -- 또는 'Tokyo Night', 'Dracula'
 
-- 윈도우
config.window_decorations = 'RESIZE'  -- 타이틀바 숨기고 리사이즈만 가능
config.window_padding = { left = 8, right = 8, top = 8, bottom = 8 }
config.window_background_opacity = 0.95
config.macos_window_background_blur = 20
 
-- 탭
config.use_fancy_tab_bar = false
config.tab_bar_at_bottom = true
config.hide_tab_bar_if_only_one_tab = true
 
-- 셸
config.default_prog = { '/opt/homebrew/bin/zsh', '-l' }  -- brew zsh (Mac 기본보다 최신)
 
-- 키바인딩
config.keys = {
  -- 분할
  { key = 'd', mods = 'CMD', action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } },
  { key = 'D', mods = 'CMD|SHIFT', action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } },
  -- pane 이동
  { key = 'LeftArrow', mods = 'CMD|OPT', action = wezterm.action.ActivatePaneDirection 'Left' },
  { key = 'RightArrow', mods = 'CMD|OPT', action = wezterm.action.ActivatePaneDirection 'Right' },
  { key = 'UpArrow', mods = 'CMD|OPT', action = wezterm.action.ActivatePaneDirection 'Up' },
  { key = 'DownArrow', mods = 'CMD|OPT', action = wezterm.action.ActivatePaneDirection 'Down' },
  -- pane 닫기
  { key = 'w', mods = 'CMD', action = wezterm.action.CloseCurrentPane { confirm = true } },
}
 
return config

WezTerm은 파일 저장 시 자동 reload. ⌘D로 분할 테스트.

4. zsh 업그레이드

Mac 기본 zsh도 동작하지만 brew zsh가 더 최신:

brew install zsh
which -a zsh
# /opt/homebrew/bin/zsh
# /bin/zsh
 
# 기본 셸 변경
sudo sh -c "echo /opt/homebrew/bin/zsh >> /etc/shells"
chsh -s /opt/homebrew/bin/zsh

새 터미널 → echo $ZSH_VERSION → 5.9+ 확인.

5. Starship 프롬프트

oh-my-zsh보다 가볍고 빠름. Rust 단일 바이너리:

brew install starship

~/.zshrc 끝에:

eval "$(starship init zsh)"

~/.config/starship.toml:

# 빠른 활성화 기본값
add_newline = true
format = """
$directory\
$git_branch\
$git_status\
$nodejs\
$python\
$rust\
$cmd_duration\
$line_break\
$character"""
 
[directory]
truncation_length = 3
truncate_to_repo = true
 
[git_status]
disabled = false
ahead = "↑${count} "
behind = "↓${count} "
 
[cmd_duration]
min_time = 2000  # 2초 이상 명령만 표시
 
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[➜](bold red)"

. ~/.zshrc 또는 새 터미널.

6. 모듈 4종 (zsh)

6.1 zsh-autosuggestions

이전 명령 기반 자동 제안 (회색):

brew install zsh-autosuggestions

~/.zshrc:

source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh

키로 제안 수락.

6.2 zsh-syntax-highlighting

명령어 컬러 (잘못된 명령 = 빨강):

brew install zsh-syntax-highlighting
source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

⚠️ syntax-highlighting은 .zshrc 마지막에 source 해야 정상 동작.

6.3 fzf — fuzzy finder

brew install fzf
$(brew --prefix)/opt/fzf/install
# 옵션 모두 yes

설치 후 새 터미널:

  • Ctrl+R — 히스토리 검색
  • Ctrl+T — 파일 검색
  • Alt+C — 디렉토리 jump

6.4 zoxide — z 대체 (smarter cd)

brew install zoxide

~/.zshrc:

eval "$(zoxide init zsh)"
z proj        # 자주 가는 프로젝트 경로로 점프
zi            # 인터랙티브 선택

7. 종합 .zshrc 예시

# History
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt SHARE_HISTORY HIST_IGNORE_DUPS HIST_IGNORE_SPACE
 
# Completion
autoload -Uz compinit && compinit
 
# Brew
eval "$(/opt/homebrew/bin/brew shellenv)"
 
# Modules
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
eval "$(zoxide init zsh)"
 
# Aliases
alias ll='ls -lah'
alias gs='git status -sb'
alias gd='git diff'
alias ..='cd ..'
 
# Tools
eval "$(starship init zsh)"
 
# (반드시 마지막)
source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

8. iTerm2 빠른 비교 셋업

WezTerm 대신 iTerm2 선호 시:

brew install --cask iterm2
  • Preferences → Profiles → Default → Text → Font = JetBrainsMono Nerd Font 13pt
  • Window → Transparency 5%, Blur on
  • Keys → Hotkey window — ⌥ Space 같은 글로벌 단축키로 토글

iTerm2의 강점 — "Hotkey Window" (어디서든 단축키로 floating 터미널). WezTerm은 같은 기능 직접 구성 (Lua) 가능하지만 즉시 사용 가능한 건 iTerm2.

검증

  1. 새 터미널 → Starship 프롬프트 표시 (자기 dir·git 브랜치 컬러)
  2. Ctrl+R → fzf 히스토리 인터랙티브 검색
  3. ls → zsh-syntax-highlighting 으로 컬러
  4. 이전 명령 일부 입력 → autosuggestions 회색 제안 →
  5. z proj → 자주 가던 프로젝트 폴더로 점프
  6. WezTerm ⌘D → pane 분할 → ⌘⌥← 으로 이동

트러블슈팅

syntax-highlighting이 컬러 안 나옴

  • .zshrc 마지막에 source 안 함 (다른 모듈보다 뒤여야 함)
  • WezTerm color_scheme이 256색 미만일 가능성 적음. Catppuccin/Tokyo Night 권장

Starship에서 폰트 깨짐

Nerd Font 누락. WezTerm config의 font 설정 확인 + 실제 폰트 설치 (brew install --cask font-jetbrains-mono-nerd-font).

z 명령이 안 됨

  • zoxide init이 .zshrc에 있는지 + . ~/.zshrc 실행했는지
  • 처음에는 데이터베이스가 비어있음 → cd 명령 몇 번 하면 학습

WezTerm 시작 시 작업 디렉토리가 홈

config에 config.default_cwd = wezterm.home_dir .. '/work' 같이 명시 또는 cd alias 자기 폴더로.

chsh 후 셸 안 바뀜

  • /etc/shells에 등록 안 한 경우 chsh 실패
  • 로그아웃 → 재로그인 또는 재부팅

참고

변경 이력

  • 2026-05-12: 첫 작성. 3가지 터미널 비교 + WezTerm + zsh + Starship + 모듈 4종 + 트러블슈팅 5종.

댓글