끝까지 헷갈리는 세 개념
Vim의 세 층 — buffer, window, tab — 은 비슷해 보이지만 전혀 달라. 이 그림이 머리에 잡히면 파일 수십 개를 열어놓고 진짜 프로젝트를 굴리는 게 자연스러워져.
Buffer — 열어놓은 파일
buffer는 메모리에 올려둔 파일이야. :e로 열든 명령줄에서 열든, 열린 파일은 전부 buffer가 돼. 화면에 보이든 안 보이든 존재하고. 말하자면 재고 목록이야.
Window (split) — buffer를 보는 창
window는 buffer 하나를 비춰주는 창이야. :sp는 가로로 (위아래로), :vs는 세로로 (좌우로) 나눠. 나뉜 칸 하나하나가 window고, 같은 buffer를 여러 window에 동시에 띄울 수도 있어.
Tab — 브라우저 탭이 아니라 작업 공간
여기서 다들 헷갈려. Vim의 tab은 브라우저처럼 파일 하나가 아니야. Vim의 tab은 window 묶음, 그러니까 화면 배치 하나를 통째로 담는 그릇이야. 숙련자 대부분은 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/ge | w) 할 때 요긴해.
Window 사이 이동
Ctrl-w가 window 조작의 관문이야. Ctrl-w h/j/k/l로 그 방향 창으로 넘어가고, Ctrl-w =로 크기를 고르게 맞춰. Ctrl-w _는 높이를, Ctrl-w |는 너비를 최대로 키워. Ctrl-w o는 나머지 창을 다 닫고 ("이것만 남겨"), Ctrl-w q는 지금 창을 닫아.