Vim/Neovim 업무환경 표준 세팅 (초보자 버전)
1) 초기 세팅 2) 사용법 3) 각 툴 단축키 4) 어디서든 재현
vimneovimtmuxproductivity
Vim/Neovim 업무환경 표준 세팅 (초보자 버전)
이 문서는 “처음 세팅한 뒤 바로 업무에 쓰는 것”에 집중한다. 과한 플러그인 없이 최소 툴만 사용한다.
최소 툴:
- neovim
- tmux
- ripgrep(rg)
- fzf
- fd
1. 초기 세팅 (처음 1회)
1-1. 설치
xcode-select --install
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install neovim tmux ripgrep fzf fd git
$(brew --prefix)/opt/fzf/install
1-2. 설정 파일 만들기
mkdir -p ~/.config/nvim
cat > ~/.config/nvim/init.lua <<'LUA'
vim.g.mapleader = ' '
vim.o.number = true
vim.o.relativenumber = true
vim.o.mouse = ''
vim.o.clipboard = 'unnamedplus'
vim.o.ignorecase = true
vim.o.smartcase = true
vim.o.updatetime = 200
vim.o.termguicolors = true
-- insert 모드 탈출
vim.keymap.set('i', 'jj', '<Esc>', { silent = true })
-- 저장/종료
vim.keymap.set('n', '<leader>w', ':w<CR>')
vim.keymap.set('n', '<leader>q', ':q<CR>')
-- 창 이동
vim.keymap.set('n', '<C-h>', '<C-w>h')
vim.keymap.set('n', '<C-j>', '<C-w>j')
vim.keymap.set('n', '<C-k>', '<C-w>k')
vim.keymap.set('n', '<C-l>', '<C-w>l')
LUA
cat > ~/.tmux.conf <<'TMUX'
set -g mouse on
set -g history-limit 100000
set -g base-index 1
setw -g pane-base-index 1
unbind C-b
set -g prefix C-a
bind C-a send-prefix
bind r source-file ~/.tmux.conf \; display-message "tmux reloaded"
TMUX
1-3. 설치 확인
nvim --version
tmux -V
rg --version
fd --version
fzf --version
2. 사용법 (업무 순서 그대로)
2-1. 업무 시작
tmux new -s work
패널 구성:
- 좌: 코드
nvim . - 우상: 테스트
./gradlew test --continuous - 우하: 로그
tail -f app.log
2-2. 업무 중
- Jira 티켓 확인
- 코드 수정
- 테스트 확인
- 로그 확인
2-3. 업무 종료
- 커밋/푸시
- tmux 분리:
Ctrl-a d - 다음에 복귀:
tmux a -t work
3. 각 툴 사용법 (단축키 중심)
3.1 Neovim 단축키 (필수만)
모드
- Normal 모드: 이동/명령
- Insert 모드: 입력
가장 많이 쓰는 키
i: 입력 시작A: 줄 끝에서 입력o: 아래 줄 추가 후 입력jj: Insert → Normalh j k l: 이동w / b: 단어 앞으로/뒤로/텍스트: 검색n / N: 다음/이전 검색 결과dd: 줄 삭제yy: 줄 복사p: 붙여넣기ciw: 단어 바꾸기di(: 괄호 안 삭제.: 방금 편집 반복u: 되돌리기Ctrl-r: 다시 실행:w: 저장:q: 종료:wq: 저장 후 종료
핵심:
ciw,.,/검색3개만 익혀도 체감이 큼.
3.2 tmux 단축키
(prefix는 Ctrl-a 기준)
Ctrl-a %: 세로 분할Ctrl-a ": 가로 분할Ctrl-a + 방향키: 패널 이동Ctrl-a d: 세션 분리tmux a -t work: 세션 복귀Ctrl-a r: tmux 설정 리로드
3.3 ripgrep (rg)
- 텍스트 검색:
rg "OrderService" - Kotlin 파일만 검색:
rg "timeout" -g "*.kt" - build 제외 검색:
rg "TODO" -g "!build/**"
3.4 fd
- 파일명 검색:
fd service - 확장자 제한:
fd -e kt User
3.5 fzf
- 파일 선택기:
fd . | fzf - git 파일 선택:
git ls-files | fzf - 히스토리 검색:
history | fzf
4. 언제 어디서든 같은 세팅 적용 (재현)
정답은 dotfiles 1개다.
4-1. 구조
~/.dotfiles
├─ nvim/.config/nvim/init.lua
├─ tmux/.tmux.conf
├─ zsh/.zshrc
└─ scripts/bootstrap.sh
4-2. bootstrap 예시
#!/usr/bin/env bash
set -euo pipefail
brew install neovim tmux ripgrep fzf fd git
mkdir -p "$HOME/.config/nvim"
ln -sf "$HOME/.dotfiles/nvim/.config/nvim/init.lua" "$HOME/.config/nvim/init.lua"
ln -sf "$HOME/.dotfiles/tmux/.tmux.conf" "$HOME/.tmux.conf"
ln -sf "$HOME/.dotfiles/zsh/.zshrc" "$HOME/.zshrc"
4-3. 새 맥북에서 복구
git clone <dotfiles-repo> ~/.dotfiles
bash ~/.dotfiles/scripts/bootstrap.sh
5. 1주 적응 체크리스트
- Day 1~2: 이동/검색만 Vim으로
- Day 3~4: 편집(
ciw,di(,.) 적용 - Day 5~7: tmux + 테스트/로그까지 고정
규칙:
- 불편 1~2회는 그대로
- 같은 불편 3회 반복되면 그때 설정 추가
6. 목표 지표
- 파일 찾기: 30초 → 8초
- 테스트 재실행 시작: 45초 → 15초
- 에디터↔터미널 전환 횟수: 20회/일 → 8회/일
2주 내 이 수치가 내려가면 세팅이 잘 맞는 것이다.