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-platform | Lua 학습 곡선 | 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 configWezTerm은 파일 저장 시 자동 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-highlightingsource /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.zsh8. 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.
검증
- 새 터미널 → Starship 프롬프트 표시 (자기 dir·git 브랜치 컬러)
Ctrl+R→ fzf 히스토리 인터랙티브 검색ls→ zsh-syntax-highlighting 으로 컬러- 이전 명령 일부 입력 → autosuggestions 회색 제안 →
→키 z proj→ 자주 가던 프로젝트 폴더로 점프- 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 실패- 로그아웃 → 재로그인 또는 재부팅
참고
- Mac 초기 셋업 — Homebrew 사전 셋업
- dotfiles 관리 —
.zshrc,wezterm.lua,starship.toml모두 chezmoi 관리 권장 - WezTerm 공식
- Starship 설정
- iTerm2
- Ghostty
변경 이력
- 2026-05-12: 첫 작성. 3가지 터미널 비교 + WezTerm + zsh + Starship + 모듈 4종 + 트러블슈팅 5종.