Tuesday, February 3rd, 2026

Vim 초보 탈출: 버퍼(Buffer), 윈도우, 탭(Tab) 완벽 정리 및 활용법

개발자에게 있어 도구를 익히는 데 쓰는 시간만큼 가치 있는 투자는 없다고 생각이 됩니다.

Vim을 처음 접했을 때, 저는 ‘버퍼(Buffer)’나 ‘탭(Tab)’이라는 용어가 나오면 애써 외면하곤 했습니다. 낯선 용어와 복잡해 보이는 단축키들이 마치 거대한 진입 장벽처럼 느껴졌거든요. 그래서 파일을 하나 열고 수정하고, 닫은 뒤 다시 다른 파일을 여는 비효율적인 방식을 고수했습니다.

Vim 초보 탈출: 버퍼(Buffer), 윈도우, 탭(Tab) 완벽 정리 및 활용법

하지만 장담컨대, 이 개념들을 이해하는 순간 Vim은 단순한 텍스트 에디터에서 강력한 **IDE(통합 개발 환경)**로 진화합니다. 복잡한 워크플로우를 단순하게 만들어주는 Vim의 3대장, **버퍼(Buffer), 윈도우(Window), 탭(Tab)**을 심층 분석합니다.

1. 보이지 않는 작업대: 버퍼 (Buffer)

많은 분이 vi filename으로 파일을 엽니다. 하지만 Vim은 한 번에 여러 파일을 메모리에 올릴 수 있도록 설계되었습니다. 이렇게 메모리에 로드된 파일 하나하나를 Vim에서는 **’버퍼’**라고 부릅니다.

① 다중 파일 열기와 :args

터미널에서 쉘 확장(Shell Expansion)을 이용해 여러 파일을 한 번에 열어보세요.

Bash

vim *.md
# 또는
vim foo bar hum

처음엔 파일이 하나만 보여서 당황스럽겠지만, Vim은 이미 모든 파일을 버퍼에 올려두었습니다. 이때 :args 명령어를 입력하면, Vim을 시작할 때 인자로 넘긴 파일 목록을 확인할 수 있습니다. (대괄호 []로 감싸진 것이 현재 파일입니다.)

② 버퍼 리스트 확인 및 이동

Vim을 시작한 이후에 추가로 연 파일까지 모두 포함해서 보려면 :buffers (또는 :ls) 명령어를 사용합니다.

  • 리스트 정보: 화면 하단에 버퍼 번호, 상태, 파일명이 표시됩니다. 현재 활성화된 버퍼는 % 기호로 표시됩니다.

이동은 다음 명령어들을 조합하여 자유자재로 할 수 있습니다.

  • 순차 이동: :bnext (단축키 :bn) / :bprevious (단축키 :bp)
  • 직접 이동: :b[번호] (예: :b3)
  • 이름으로 이동: :b [파일명] (예: :b main이라고만 쳐도 main.c로 이동합니다. 부분 일치만으로 이동 가능한 강력한 기능입니다.)

③ 버퍼 관리와 set hidden

작업이 끝난 버퍼는 :bd (buffer delete) 명령어로 메모리에서 내릴 수 있습니다. 중요 Tip: 버퍼를 전환할 때 “저장하지 않았다”는 에러(E37: No write since last change)가 뜬다면, 설정 파일(.vimrc)에 set hidden을 추가하세요. 이를 통해 저장하지 않은 상태에서도 자유롭게 버퍼를 오가며 작업 흐름을 유지할 수 있습니다.

2. 화면 분할의 미학: 윈도우 (Window)

버퍼가 ‘내용’이라면, 윈도우는 그 내용을 보여주는 **’틀(View)’**입니다. Vim의 윈도우는 겹쳐지는 창이 아니라, 화면을 타일처럼 쪼개는 방식(Tiling)입니다.

① 화면 쪼개기

  • 수평 분할: :split 명령어를 입력하면 위아래로 화면이 나뉩니다.
  • 수직 분할: :vsplit 명령어를 사용하면 좌우로 나뉩니다.
  • 시작부터 분할: 터미널에서 vim -o file1 file2를 입력하면 처음부터 수평 분할된 상태로 파일들을 엽니다.

처음 분할을 하면 같은 파일이 두 군데 보일 것입니다. 이는 긴 코드의 선언부를 보면서 구현부를 작성할 때 매우 유용합니다. 물론 :e filename으로 각 윈도우에 다른 파일을 띄우는 것이 일반적입니다.

② 윈도우 간 이동

마우스에 손을 뻗지 마세요. Ctrl+w가 핵심입니다.

  • Ctrl+w 누른 후 w: 윈도우를 순차적으로 순환합니다.
  • Ctrl+w 누른 후 방향키(h, j, k, l): 해당 방향의 윈도우로 포커스를 이동합니다.

3. 작업 문맥의 전환: 탭 (Tab)

여기서 가장 큰 오해가 발생합니다. “Vim의 탭은 크롬이나 VS Code의 탭과 같겠지?” 아닙니다. Vim의 탭은 **’윈도우들의 레이아웃(배치)을 담는 컨테이너’**입니다. 즉, 파일 하나를 보여주는 것이 아니라, 작업 환경 자체를 묶어두는 상위 개념입니다.

① 탭의 활용 예시

  • Tab 1: [좌: 소스코드] | [우: 헤더파일] (코딩용 화면 구성)
  • Tab 2: [전체화면: 설정파일] (설정 변경용 화면 구성)

이렇게 탭을 전환하면, 파일 하나가 바뀌는 게 아니라 **화면 구성 전체(Workspace)**가 바뀝니다.

② 탭 제어 명령어

  • 새 탭 열기: :tabedit filename (또는 :tabe)
  • 이동: :tabnext (또는 :tabn), :tabprevious (또는 :tabp)
  • 닫기: :tabclose (또는 :tabc) – 주의: 탭을 닫아도 그 안의 버퍼(파일)는 메모리에 남아 있습니다.
  • 시작부터 탭으로: vim -p file1 file2 명령어로 각 파일을 별도 탭에 띄워서 시작할 수 있습니다.

4. 결론: 생산성의 임계점을 넘어라

버퍼, 윈도우, 탭은 처음에는 혼란스럽지만, 익숙해지는 순간 엄청난 보상을 줍니다.

  • 버퍼: 수십 개의 파일을 메모리에 올려두고 초고속으로 오가는 기동성
  • 윈도우: 여러 코드를 동시에 참조하는 시야
  • 탭: 작업의 맥락(Context)을 분리하여 집중력을 유지하는 구조

지금 당장 :bn:split부터 손가락에 익혀보세요. Vim을 쓰면서도 여전히 마우스와 화살표 키를 찾아 헤매던 과거와 작별하게 될 것입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다