coredot.today
맥 개발 환경 세팅 2026 — 처음 맥을 쓰는 개발자를 위한 앱과 CLI 도구 가이드
블로그로 돌아가기
macOS개발 환경HomebrewiTerm2StarshipmiseuvtmuxColima생산성 앱튜토리얼

맥 개발 환경 세팅 2026 — 처음 맥을 쓰는 개발자를 위한 앱과 CLI 도구 가이드

윈도우나 리눅스에서 맥으로 넘어온 개발자가 첫날 무엇을 깔아야 하는지, 왜 그것이어야 하는지 정리했습니다. iTerm2와 Nerd Font, Homebrew, Starship 프롬프트, mise·uv·direnv로 언어와 환경변수 관리, Colima로 도커, tmux와 SSH 원격 작업, Brewfile·chezmoi 백업까지 — 설정 파일을 그대로 복사해 쓸 수 있게 .zshrc 전문을 포함했습니다. GUI 앱은 필수·권장·취향으로 나눠 추천합니다.

코어닷투데이2026-08-2245

맥 개발 환경 세팅크게 보기

맥을 처음 받은 개발자가 가장 많이 하는 실수는 "일단 되는 대로 깔기"입니다. Node는 공식 설치 프로그램으로, Python은 Anaconda로, 도커는 Docker Desktop으로, 터미널은 기본 그대로. 한 달쯤 지나면 PATH가 엉키고 어떤 Python이 실행되는지 모르게 됩니다.

이 글은 그 반대로 갑니다. 모든 도구를 Homebrew 한 곳에서 관리하고, 언어 버전·환경변수·도커까지 각각 하나의 도구만 정해 쓰고, 마지막에 전체 구성을 파일 하나로 백업해 다음 맥에서 10분 만에 복원하는 구성입니다. 2026년 8월 기준 현역 도구들로 골랐고, 설정 파일은 그대로 복사해 쓸 수 있게 전문을 실었습니다.

한눈에 보는 구성

영역선택대안 (안 쓴 이유)
터미널iTerm2Ghostty, Warp — 훌륭하지만 iTerm2가 자료가 가장 많음
기본 zshfish — 문법이 달라 스크립트 호환 문제
셸 프레임워크없이 시작Oh My Zsh — 편하지만 느리고 무엇이 어디서 오는지 모르게 됨
프롬프트StarshipPowerlevel10k — zsh 전용, 유지보수 모드
폰트JetBrainsMono Nerd FontD2Coding — 한글 코딩엔 좋지만 아이콘 글리프 없음
셸 기능autosuggestions + syntax-highlighting + fzf
언어 버전misenvm/pyenv/rbenv — 언어마다 따로 관리하게 됨
Python 패키지uvpip + venv, Poetry — uv가 10~100배 빠르고 둘을 대체
환경변수direnv.zshrc에 export — 프로젝트 바꿀 때마다 충돌
도커ColimaDocker Desktop — 기업 유료, 무거움. OrbStack은 유료지만 훌륭한 대안
원격 작업Headscale/Tailscale + SSH + tmuxVPN 직접 구축 — 관리 부담
환경 백업Brewfile + chezmoi수동 메모 — 반드시 빠뜨림
명령 기록fzf, 필요 시 Atuin

설치 순서는 의존 관계를 따릅니다. Xcode 도구 → Homebrew → 폰트와 iTerm2 → CLI 도구 → .zshrc → 언어·도커 → GUI 앱 → 백업 순입니다.

1. 기반: Xcode 명령줄 도구와 Homebrew

Homebrew가 Xcode 명령줄 도구(Git, 컴파일러)에 의존하므로 이것부터입니다.

hljs language-bash
xcode-select --install
hljs language-bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# Apple Silicon — 설치 마지막에 나오는 "Next steps" 두 줄
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

brew doctor   # "Your system is ready to brew." 확인

Intel 맥은 경로가 /usr/local/bin/brew입니다. 이 PATH 등록을 빼먹으면 새 터미널에서 brew를 못 찾습니다. 기본 설치 과정을 더 자세히 보려면 맥에서 Claude Code 시작하기 글의 1~3단계를 참고하세요.

2. 터미널: iTerm2와 Nerd Font

기본 터미널 앱도 쓸 만하지만 iTerm2는 분할 창, 검색, 핫키 창(어디서든 단축키로 터미널 띄우기), 트리거, 셸 통합 등에서 여전히 앞섭니다. 폰트는 Nerd Font 계열이어야 합니다. Starship·eza가 표시하는 Git 브랜치 아이콘, 폴더 아이콘 같은 글리프가 들어 있기 때문입니다.

hljs language-bash
brew install --cask iterm2 font-jetbrains-mono-nerd-font

iTerm2 폰트와 필수 설정

iTerm2를 열고 +,로 설정을 엽니다.

폰트
Profiles → Text → Font에서 JetBrainsMono Nerd Font 선택, 크기 13~14. "Use ligatures"는 취향(=>, !=가 합자로 표시). 한글이 섞인 출력이 어긋나면 같은 화면의 "Non-ASCII Font"에 D2Coding이나 Apple SD Gothic Neo를 지정
색상
Profiles → Colors → Color Presets에서 Solarized DarkTango Dark. 더 원하면 iterm2colorschemes.com에서 Catppuccin·Tokyo Night 등을 가져오기(Import)
Profiles → Keys → General에서 Left Option key: Esc+. 이걸 안 하면 +로 단어 단위 이동이 안 됨
핫키
Keys → Hotkey → Create a Dedicated Hotkey Window+Space 같은 키를 지정. 어느 앱에서든 그 키로 터미널이 내려옴

Shell Integration은 iTerm2 메뉴 → Install Shell Integration으로 설치하면 명령 단위 점프(++), 명령 실행 시간 표시, 마지막 출력만 선택 같은 기능이 켜집니다. 선택 사항입니다.

3. CLI 도구 한 번에 설치

아래 한 줄이 이 글의 핵심입니다. 각각이 무엇인지는 바로 아래 표에 있습니다.

hljs language-bash
brew install \
  git \
  gh \
  starship \
  mise \
  uv \
  direnv \
  fzf \
  ripgrep \
  fd \
  bat \
  eza \
  jq \
  yq \
  tree \
  tmux \
  zoxide \
  btop \
  zsh-autosuggestions \
  zsh-syntax-highlighting
도구대체하는 것무엇을 하나
git · ghApple Git최신 Git과 GitHub CLI. gh pr create, gh repo clone이 터미널에서 바로 됨
starship기본 % 프롬프트현재 폴더·Git 브랜치·변경 상태·언어 버전·명령 소요 시간을 한 줄에 표시. Rust로 짜여 빠름
misenvm · pyenv · rbenv · asdfNode·Python·Go·Ruby·Java 등 모든 언어 버전을 하나의 도구로. 폴더마다 다른 버전 자동 전환
uvpip · venv · pipx · PoetryPython 패키지·가상환경·프로젝트·도구 설치를 전부 담당. 압도적으로 빠름
direnv수동 export폴더에 들어가면 .envrc의 환경변수를 자동 로드, 나오면 해제
fzfCtrl+R 기본 검색명령 기록·파일·폴더를 퍼지 검색. 써보면 못 돌아가는 도구 1위
ripgrep (rg)grep -r코드 전체 검색. .gitignore를 존중하고 수십 배 빠름
fdfindfd 이름으로 끝. find의 난해한 문법 없이 빠른 파일 찾기
batcat문법 강조·줄 번호·Git 변경 표시가 있는 cat
ezals아이콘·색상·Git 상태·트리 뷰가 있는 ls
jq · yqJSON·YAML을 터미널에서 질의·변환. API 응답 확인, k8s 매니페스트 편집
tree폴더 구조를 트리로. README에 구조 붙일 때
tmux터미널 세션 유지·분할. SSH 끊겨도 작업이 살아 있음
zoxidecd자주 가는 폴더를 학습. z proj만 쳐도 ~/work/my-project로 이동
btoptop · 활성 상태 보기CPU·메모리·디스크·네트워크·프로세스를 한 화면에
zsh-autosuggestions기록을 바탕으로 명령을 회색으로 미리 제안. 로 수락
zsh-syntax-highlighting입력 중인 명령이 유효하면 초록, 오타면 빨강

4. .zshrc 설정 전문

Oh My Zsh 없이 갑니다. 프레임워크가 해주던 일(플러그인 로드, 프롬프트, 별칭)을 아래 40줄이 대신하고, 무엇이 어디서 오는지 전부 보입니다. 아래 내용을 ~/.zshrc에 그대로 붙여넣으세요. 기존 내용이 있으면 백업 후 교체합니다.

hljs language-bash
# ~/.zshrc — 2026 맥 개발 환경

# ── Homebrew ─────────────────────────────────────────────
# (.zprofile에 brew shellenv가 있으면 이 줄은 생략해도 됨)
eval "$(/opt/homebrew/bin/brew shellenv)"

# ── 기록 ─────────────────────────────────────────────────
HISTFILE=~/.zsh_history
HISTSIZE=100000
SAVEHIST=100000
setopt SHARE_HISTORY HIST_IGNORE_ALL_DUPS HIST_IGNORE_SPACE HIST_REDUCE_BLANKS

# ── 자동완성 ─────────────────────────────────────────────
autoload -Uz compinit && compinit
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'   # 대소문자 무시
zstyle ':completion:*' menu select

# ── 셸 플러그인 (brew로 설치한 경로) ─────────────────────
source "$(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh"
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=244'

# ── 도구 활성화 ──────────────────────────────────────────
eval "$(starship init zsh)"          # 프롬프트
eval "$(mise activate zsh)"          # 언어 버전
eval "$(direnv hook zsh)"            # 환경변수
eval "$(zoxide init zsh)"            # 똑똑한 cd
source <(fzf --zsh)                  # Ctrl+R 기록, Ctrl+T 파일, Alt+C 폴더

# fzf에서 파일 찾을 때 fd 사용 (.gitignore 존중, 숨김 파일 포함)
export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_ALT_C_COMMAND='fd --type d --hidden --exclude .git'
export FZF_DEFAULT_OPTS='--height 40% --layout=reverse --border'

# ── 별칭 ─────────────────────────────────────────────────
alias ls='eza --icons --group-directories-first'
alias ll='eza -l --icons --git --group-directories-first'
alias la='eza -la --icons --git --group-directories-first'
alias lt='eza --tree --level=2 --icons'
alias cat='bat --paging=never'
alias top='btop'
alias g='git'
alias gs='git status -sb'
alias gl='git log --oneline --graph -20'

# ── 편집기 ───────────────────────────────────────────────
export EDITOR='code --wait'           # vim을 선호하면 'nvim'
export LANG=ko_KR.UTF-8

# ── 마지막: 문법 강조는 반드시 맨 끝에 ─────────────────────
source "$(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
hljs language-bash
source ~/.zshrc

몇 가지 설명:

  • zsh-syntax-highlighting은 반드시 파일 맨 끝에 둡니다. 그 뒤에 정의된 위젯은 강조되지 않습니다.
  • compinit은 한 번만. 여러 번 호출하면 셸 시작이 느려집니다. 나중에 다른 가이드의 .zshrc 조각을 붙여넣을 때 중복되지 않는지 확인하세요.
  • HIST_IGNORE_SPACE — 공백으로 시작하는 명령은 기록에 남지 않습니다. 토큰을 인자로 넘길 때 유용합니다.
  • 셸 시작이 느리게 느껴지면 time zsh -i -c exit로 측정합니다. 0.2초 이하면 정상입니다.

Starship 프롬프트 다듬기

기본값도 좋지만 한 줄 프롬프트를 선호한다면 ~/.config/starship.toml을 만듭니다.

hljs language-toml
# ~/.config/starship.toml
add_newline = false

format = """
directorydirectorydirectorygit_branchgitstatusgit_statusgits​tatusnodejspythonpythonpythoncmd_duration
$character"""

[directory]
truncation_length = 3
style = "bold cyan"

[git_branch]
symbol = " "
style = "bold purple"

[git_status]
style = "yellow"

[nodejs]
format = "[symbol(symbol(symbol(version )]($style)"
[python]
format = "[symbol(symbol(symbol(version )]($style)"

[cmd_duration]
min_time = 2000
format = "took [duration](duration](duration](style) "

[character]
success_symbol = "[❯](bold green)"
error_symbol = "[❯](bold red)"

starship preset 명령으로 미리 만들어진 테마(nerd-font-symbols, pastel-powerline 등)를 불러올 수도 있습니다.

5. 언어 버전: mise

nvm, pyenv, rbenv, jenv를 각각 깔던 시대는 끝났습니다. mise 하나가 전부 대체하고, .zshrc에서 이미 활성화했으므로 폴더별 버전이 자동으로 바뀝니다.

hljs language-bash
# 전역 기본 버전
mise use --global node@lts
mise use --global python@3.13
mise use --global go@latest      # 필요한 언어만

# 프로젝트 폴더에서 — .mise.toml 또는 .tool-versions 생성
cd ~/work/my-app
mise use node@22

mise ls                          # 설치된 버전
mise doctor                      # 문제 진단

mise는 .nvmrc, .python-version, .tool-versions 파일도 그대로 읽으므로 기존 프로젝트와 호환됩니다. 팀원이 nvm을 써도 충돌하지 않습니다.

6. Python: uv

Python만은 mise보다 uv에게 맡기는 것이 낫습니다. uv가 인터프리터 설치부터 가상환경, 의존성 잠금, 도구 실행까지 한 번에 처리하기 때문입니다.

hljs language-bash
# 새 프로젝트
uv init my-api && cd my-api
uv add fastapi uvicorn           # pyproject.toml + uv.lock 자동
uv run uvicorn main:app --reload # 가상환경 활성화 없이 실행

# 기존 프로젝트 (requirements.txt)
uv venv && uv pip install -r requirements.txt

# 전역 CLI 도구 (pipx 대체)
uv tool install ruff
uv tool install httpie

# 인터프리터
uv python install 3.12
uv python list

uv run을 습관화하면 source .venv/bin/activate를 칠 일이 없어집니다. Jupyter도 uv run --with jupyter jupyter lab으로 프로젝트 환경에서 바로 띄울 수 있습니다.

7. 환경변수: direnv

프로젝트마다 다른 API 키, DB 주소를 .zshrc에 쌓아두면 반드시 사고가 납니다. direnv는 폴더에 들어갈 때만 변수를 올리고, 나오면 내립니다.

hljs language-bash
cd ~/work/my-app
cat > .envrc <<'EOF'
export DATABASE_URL=postgres://localhost:5432/myapp
export OPENAI_API_KEY=sk-...
dotenv_if_exists .env
EOF
direnv allow                      # 처음 한 번, .envrc가 바뀔 때마다 다시
echo .envrc >> .gitignore         # 비밀값은 절대 커밋하지 않음

dotenv_if_exists .env 줄을 넣어두면 기존 .env 파일도 함께 로드됩니다. uv 프로젝트라면 .envrcsource .venv/bin/activate를 적어 폴더 진입 시 가상환경까지 자동으로 켤 수 있습니다.

8. 도커: Colima

Docker Desktop은 직원 250명 이상 또는 매출 1천만 달러 이상 기업에서 유료이고, 메뉴바에서 메모리를 꽤 먹습니다. Colima는 같은 도커 엔진을 가벼운 VM에서 돌리는 오픈소스 대안입니다.

hljs language-bash
brew install colima docker docker-compose

colima start --cpu 4 --memory 8 --disk 60   # 처음 한 번 리소스 지정
docker run --rm hello-world
docker compose up -d

colima stop                                  # 안 쓸 때 끄기
colima start                                 # 이후엔 설정 기억함

docker 명령은 그대로 쓰고, VS Code Docker 확장도 그대로 동작합니다. Apple Silicon에서 x86 이미지를 돌려야 한다면 colima start --vm-type vz --vz-rosetta로 시작합니다. 속도와 파일 동기화가 중요하고 유료(개인은 무료)여도 괜찮다면 OrbStack(brew install --cask orbstack)이 가장 쾌적합니다.

9. tmux, Git, GitHub

tmux

SSH로 서버에 붙어 긴 작업을 돌리다 연결이 끊기면 작업도 죽습니다. tmux 안에서 돌리면 세션이 살아 있고 다시 붙으면 됩니다. 로컬에서도 프로젝트별로 창 묶음을 유지하는 데 씁니다.

hljs language-bash
cat > ~/.tmux.conf <<'EOF'
set -g prefix C-a            # Ctrl+B 대신 Ctrl+A
unbind C-b
bind C-a send-prefix
set -g mouse on              # 마우스로 창 크기 조절·스크롤
set -g base-index 1          # 창 번호 1부터
set -g history-limit 50000
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",xterm-256color:Tc"   # 트루컬러
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind r source-file ~/.tmux.conf \; display "reloaded"
EOF
명령 / 키동작
tmux new -s workwork라는 세션 시작
tmux attach -t work (또는 tmux a)끊긴 세션에 다시 붙기
tmux ls세션 목록
Ctrl+Ad세션에서 빠져나오기(작업은 계속 실행)
Ctrl+A| / -세로 / 가로 분할
Ctrl+Ac / n / p새 창 / 다음 / 이전 창

Git 기본 설정

hljs language-bash
git config --global user.name "홍길동"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main
git config --global pull.rebase false
git config --global core.editor "code --wait"
git config --global push.autoSetupRemote true    # 첫 push 때 -u 생략 가능
git config --global rerere.enabled true          # 같은 충돌 자동 재해결
git config --global core.excludesfile ~/.gitignore_global
printf ".DS_Store\n.envrc\n.env\n.idea/\n" > ~/.gitignore_global

.DS_Store를 전역 ignore에 넣는 것은 맥 사용자의 예의입니다.

GitHub 인증과 SSH 키

hljs language-bash
# HTTPS — 가장 간단. 브라우저 인증 한 번이면 끝
gh auth login          # GitHub.com → HTTPS → Login with a web browser
gh auth status

# SSH — 서버·CI와 같은 키를 쓰고 싶을 때
ssh-keygen -t ed25519 -C "you@example.com"
gh ssh-key add ~/.ssh/id_ed25519.pub --title "MacBook 2026"
ssh -T git@github.com   # "Hi 아이디! You've successfully authenticated" 확인

10. 원격 작업: Headscale(Tailscale) + SSH + tmux

집이나 회사의 개발 서버, GPU 머신에 어디서든 붙으려면 VPN이 필요합니다. Tailscale은 WireGuard 기반 메시 VPN으로 설정이 거의 없고, 회사가 자체 호스팅을 원하면 오픈소스 컨트롤 서버인 Headscale을 씁니다. 클라이언트는 둘 다 Tailscale 앱입니다.

hljs language-bash
brew install --cask tailscale

# Tailscale 공식 서버를 쓸 때: 앱 실행 후 로그인하면 끝
# 회사 Headscale을 쓸 때: 관리자에게 받은 서버 주소로 로그인
tailscale up --login-server https://headscale.example.com

tailscale status                  # 연결된 머신과 IP 목록
ssh user@dev-server               # Tailscale IP 또는 MagicDNS 이름으로 접속

SSH 접속을 ~/.ssh/config에 등록해 두면 이름만으로 붙습니다.

hljs language-text
# ~/.ssh/config
Host dev
  HostName dev-server            # Tailscale MagicDNS 이름 또는 100.x.y.z
  User ubuntu
  IdentityFile ~/.ssh/id_ed25519
  ServerAliveInterval 30
  ServerAliveCountMax 3

이제 일상의 원격 루틴은 세 줄입니다.

hljs language-bash
ssh dev                           # 접속
tmux a || tmux new -s main        # 있으면 붙고 없으면 새로
# ... 작업 → 노트북 덮어도 작업은 계속 ...

VS Code의 Remote - SSH 확장을 쓰면 같은 설정으로 원격 폴더를 로컬처럼 편집할 수 있습니다.

11. GUI 앱 추천

전부 Homebrew cask로 설치합니다. App Store 앱은 mas로 같이 관리할 수 있습니다.

필수 — 첫날 설치

hljs language-bash
brew install --cask \
  visual-studio-code \
  raycast \
  rectangle \
  google-chrome \
  1password
무엇
Visual Studio Code에디터사실상 표준. AI 에디터를 원하면 cursor, JetBrains 계열은 jetbrains-toolbox
Raycast런처Spotlight 대체. 앱 실행·클립보드 기록·창 관리·스니펫·계산기를 한 키에. 무료로 충분
Rectangle창 관리단축키로 창을 좌우 반·1/3·최대화. 윈도우의 Win+가 그리운 분. Raycast 창 관리로 대체 가능
Chrome브라우저개발자 도구 기준. Arc·Brave·Firefox는 취향
1Password비밀번호SSH 에이전트 기능으로 SSH 키까지 관리. 무료를 원하면 Bitwarden

권장 — 일주일 안에

hljs language-bash
brew install --cask \
  stats \
  maccy \
  shottr \
  tableplus \
  bruno \
  obsidian \
  slack
무엇
Stats메뉴바 모니터CPU·메모리·네트워크·배터리를 메뉴바에. 오픈소스
Maccy클립보드 기록가볍고 빠른 클립보드 히스토리. Raycast 클립보드를 쓰면 생략
Shottr스크린샷캡처 후 화살표·블러·OCR까지. CleanShot X의 무료 대안
TablePlusDB 클라이언트Postgres·MySQL·SQLite·Redis를 한 앱에서. 무료 버전으로 대부분 충분
BrunoAPI 클라이언트Postman 대체. 요청 컬렉션이 파일로 저장돼 Git으로 공유
Obsidian노트마크다운 파일 기반 노트. 개발 메모·TIL
Slack협업팀이 쓰는 것으로. Discord·Zoom도 cask로 설치 가능

취향 — 필요할 때

cask 이름언제
GhosttyghosttyiTerm2보다 빠르고 단순한 GPU 터미널을 원할 때
OrbStackorbstackColima보다 빠른 도커·리눅스 VM. 개인 무료
Karabiner-Elementskarabiner-elements키 리매핑 — Caps Lock을 Esc/Ctrl로, 한영 전환 키 변경
AltTabalt-tab윈도우식 Alt+Tab 창 전환(앱이 아니라 창 단위)
Icejordanbaird-ice메뉴바 아이콘 숨기기. 노치 맥북에서 메뉴바가 넘칠 때
ForkforkGit GUI. 복잡한 리베이스·충돌을 눈으로 볼 때
ProxymanproxymanHTTPS 트래픽 디버깅(모바일 앱 포함)
Figmafigma디자인 시안 확인
Docker Desktopdocker-desktop회사 정책상 필요하거나 Kubernetes 내장을 원할 때

macOS 시스템 설정 몇 가지

앱은 아니지만 개발자가 첫날 바꾸는 설정입니다.

hljs language-bash
# 키 반복 속도 — 코드 편집 시 커서 이동이 빨라짐
defaults write NSGlobalDomain KeyRepeat -int 2
defaults write NSGlobalDomain InitialKeyRepeat -int 15

# Finder: 숨김 파일·확장자·경로 표시
defaults write com.apple.finder AppleShowAllFiles -bool true
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
defaults write com.apple.finder ShowPathbar -bool true

# 스크린샷 저장 위치
mkdir -p ~/Screenshots && defaults write com.apple.screencapture location ~/Screenshots

killall Finder

설정 앱에서는 키보드 → 키보드 단축키 → 입력 소스에서 한영 전환을 Caps Lock이 아닌 +Space로 두거나, Karabiner로 오른쪽 에 매핑하는 것을 권합니다. Caps Lock 한영 전환은 지연이 있어 타이핑 중 글자가 씹힙니다.

12. 명령 기록: fzf, 그리고 Atuin

.zshrcsource <(fzf --zsh) 한 줄로 이미 세 가지 키가 살아 있습니다.

동작
Ctrl+R명령 기록을 퍼지 검색. dock up만 쳐도 docker compose up -d가 나옴
Ctrl+T현재 폴더 아래 파일을 검색해 명령줄에 삽입. code 입력 후 Ctrl+T
Alt+C하위 폴더를 검색해 이동 (iTerm2에서 Option=Esc+ 설정 필요)

여러 맥·서버의 명령 기록을 동기화하고, "지난주 그 서버에서 친 명령"을 찾고 싶다면 그때 Atuin을 추가합니다. 처음부터 필요하지는 않습니다.

hljs language-bash
brew install atuin
echo 'eval "$(atuin init zsh)"' >> ~/.zshrc
atuin import auto                 # 기존 zsh 기록 가져오기
# 동기화가 필요하면: atuin register / atuin login

13. 환경 백업: Brewfile + chezmoi

여기까지 만든 환경을 다음 맥에서 10분 만에 되살리는 방법입니다.

Brewfile — 설치한 것 전부를 파일 하나로

hljs language-bash
brew bundle dump --file=~/Brewfile --force     # 현재 설치 목록 → Brewfile
cat ~/Brewfile                                  # brew/cask/mas 항목이 한 줄씩

새 맥에서는 Homebrew만 설치한 뒤:

hljs language-bash
brew bundle install --file=~/Brewfile

한 줄로 CLI·GUI 앱·폰트가 전부 설치됩니다. App Store 앱도 brew install masmas "Xcode", id: 497799835 형식으로 Brewfile에 들어갑니다.

chezmoi — 설정 파일(dotfiles)을 Git으로

.zshrc, .tmux.conf, .gitconfig, starship.toml, .ssh/config 같은 파일을 Git 저장소에 넣고 어느 머신에서든 받아 적용합니다. 단순 심링크 방식보다 나은 점은 머신별 차이(회사/개인 이메일, Intel/Apple Silicon 경로)를 템플릿으로 처리하고, 비밀값은 1Password 등에서 꺼내오게 할 수 있다는 것입니다.

hljs language-bash
brew install chezmoi
chezmoi init                                   # ~/.local/share/chezmoi 저장소 생성

chezmoi add ~/.zshrc ~/.tmux.conf ~/.gitconfig ~/.config/starship.toml ~/Brewfile
chezmoi cd                                     # 저장소로 이동
git remote add origin git@github.com:아이디/dotfiles.git
git add -A && git commit -m "init dotfiles" && git push -u origin main
exit

새 맥에서는:

hljs language-bash
brew install chezmoi
chezmoi init --apply git@github.com:아이디/dotfiles.git
brew bundle install --file=~/Brewfile

두 줄로 끝입니다. 설정을 바꿀 때마다 chezmoi edit ~/.zshrcchezmoi applychezmoi cd && git commit 습관만 들이면 됩니다.

마치며: 새 맥에서 처음 30분의 순서

0~10분
xcode-select --install → Homebrew → brew install --cask iterm2 font-jetbrains-mono-nerd-font → iTerm2 폰트 설정
10~20분
CLI 도구 한 줄 설치 → .zshrc 붙여넣기 → mise use --global node@lts python@3.13gh auth login
20~30분
필수 GUI 앱 cask 설치 → 키 반복 속도·한영 전환 설정 → Colima는 첫 도커 프로젝트 때
끝나면
brew bundle dump + chezmoi add로 지금 상태를 저장. 이 다음 맥부터는 두 줄

이 구성의 원칙은 하나입니다. 역할마다 도구는 하나, 설치 경로는 Homebrew 하나, 설정은 Git에. 이것만 지키면 1년 뒤에도 which python의 답이 예측 가능합니다. 이 환경 위에 AI 코딩 도구를 얹는 과정은 맥에서 Claude Code 시작하기에서 이어집니다.