본문 바로가기
C.W.K.
Stream
Lesson 01 of 04 · published

Buffer, Split, Tab

~14 min · vim, buffers, splits, tabs

Level 0갇힌 자
0 XP0/35 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

끝까지 헷갈리는 세 개념

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는 파일 재고, split은 지금 어떻게 보고 있느냐, tab은 배치를 통째로 바꾸는 장치야. "파일마다 tab 하나"라는 생각은 버려. 그건 브라우저에서 온 습관이고, Vim이 설계된 방식보다 느려.

실제로 쓰게 될 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는 지금 창을 닫아.

Code

Buffer 명령·vim
:e file.txt        " 현재 window 에 파일 열기
:ls                " 모든 buffer 리스트
:b 3               " buffer 3 으로 (번호로)
:b foo             " 이름에 'foo' 매치되는 buffer 로
:bn                " 다음 buffer
:bp                " 이전 buffer
:bd                " 현재 buffer 닫기
:bd 3              " buffer 3 닫기
:bufdo w           " 모든 buffer 에 :w 실행 (전체 저장)
:bufdo %s/old/new/ge | w   " 모든 buffer 치환 + 저장
Split·vim
:sp                " 가로 split (현재 buffer)
:sp file.txt       " 가로 split, 파일 열기
:vs                " 세로 split
:vs file.txt       " 세로 split, 파일 열기
Ctrl-w h           " 왼쪽으로
Ctrl-w j           " 아래로
Ctrl-w k           " 위로
Ctrl-w l           " 오른쪽으로
Ctrl-w =           " 사이즈 균등화
Ctrl-w _           " 높이 최대
Ctrl-w |           " 너비 최대
Ctrl-w r           " split 회전
Ctrl-w o           " 이 window 만 (다른 거 닫기)
Ctrl-w q           " 현재 window 닫기
Ctrl-w T           " 현재 window 를 새 tab 으로 이동
Tab (조심해서 써)·vim
:tabnew            " 새 tab
:tabnew file.txt   " 파일과 함께 새 tab
gt                 " 다음 tab
gT                 " 이전 tab
3gt                " tab 3 으로
:tabclose          " 현재 tab 닫기
:tabo              " 다른 모든 tab 닫기

External links

Exercise

Vim 하나에 파일 세 개를 열어. vim a.txt b.txt c.txt. 종료하지 말고 이어서 해봐. (1) :ls로 buffer 목록 읽기, (2) :vs로 세로로 나누기, (3) 나뉜 창 하나에서 :b 2로 두 번째 파일 보기, (4) Ctrl-w h / Ctrl-w l로 창 사이 오가기, (5) :bufdo w로 전부 저장, (6) Ctrl-w q로 창 하나 닫기. 창을 닫아도 buffer는 살아남는다는 걸 눈여겨봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.