계속 헷갈리는 세 컨셉
Vim 의 세 레이어 — buffer, window, tab — 이 같은 거 같지만 안 같아. 정신 모델이 박히면 수십 개 파일 열어두고 진짜 프로젝트 작업하는 게 자연스러워져.
Buffer — 연 파일들
Buffer = 메모리에 유지된 파일. :e 로 또는 커맨드라인에서 여는 모든 파일이 buffer 가 돼. Buffer 는 보이든 안 보이든 존재해 — 그게 inventory.
Window (split) — buffer 의 view
Window = buffer 하나를 보여주는 viewport. :sp 가 가로 split, :vs 가 세로 split. 각 split 이 window — 같은 buffer 가 동시에 여러 window 에 보일 수 있어.
Tab — workspace, browser tab 이 아냐
이게 모두 헷갈리는 부분. Vim tab 은 browser 처럼 한 파일 이 아냐. Vim tab 은 window 모음 — workspace 레이아웃 통째로. 숙련자 대부분은 tab 별로 안 써; 한 tab 안에 많은 buffer + 몇 개 split 을 선호.
실제로 쓸 buffer 명령
:ls 가 열린 buffer 를 번호와 수정 상태로 리스트. :b N 이 N 번 buffer 로 점프; :b name 이 부분 파일명 매치로 점프. :bn / :bp 순환. :bd 가 현재 buffer 닫음. :bufdo cmd 가 모든 buffer 에 명령 실행 — 전체 저장 (:bufdo w) 또는 전체 파일 치환 (:bufdo %s/old/new/g | w) 에 유용.
Window 이동
Ctrl-w prefix 가 window operation 의 게이트웨이. Ctrl-w h/j/k/l 가 그 방향 window 로 이동. Ctrl-w = 가 사이즈 균등화. Ctrl-w _ 가 높이 최대화; Ctrl-w | 가 너비 최대화. Ctrl-w o 가 다른 window 모두 닫음 ("이거만"). Ctrl-w q 가 현재 window 닫음.