본문 바로가기
목차
utils

[vim] buffer 와 window

by ds31x 2026. 1. 24.
728x90
반응형

vim의 기능은 끝이 없음...

이중에서 buffer 관리와 옆에 창을 띄어서 보는 정도만 가끔 사용하긴 하지만...

tmux를 이용하고, vim을 하나 새로 띄우는 것을 보다 선호함.


buffer 와 window

vim 의 구조는 대략적으로 다음과 같음;

Vim
 └─ Tab
       └─ Window
              └─ Buffer

Tab :
하나의 작업 공간 단위로, 여러 개의 window를 묶어 관리하기 위한 컨테이너.

Window :
화면에 실제로 보이는 편집 영역으로, 특정 buffer의 내용을 표시하는 뷰(view) 역할을 수행.

Buffer :
파일의 내용이 메모리에 로드된 편집 대상 자체로, 화면에 보이지 않더라도 존재할 수 있음.


buffer 관련 명령어

주로 버퍼 관련하여 다음의 명령어를 이용.

  • 현재 창에서 보는 버퍼 전환 => :b <버퍼번호>
  • 현재 버퍼 닫기 => :bd
  • 현재 window의 버퍼를 보지만 않기 (window닫힘) => :hide
  • 위로 분할해서 새로운 window로 보기 => sb <버퍼번호>
  • 아래로 분할해서 새로운 window로 보기 => rightbelow sb <버퍼번호> (rightb 로 줄여도 됨)
  • 오른쪽으로 분할해서 새로운 window로 보기 => vert sb <버퍼번호>
  • 왼쪽으로 분할해서 새로운 window로 보기 => vert rightbelow sb <버퍼번호>

버퍼 관련 자주 사용되는 명령어와 풀네임.

축약 풀네임 의미
:b <버퍼번호> :buffer <버퍼번호> 해당 번호 버퍼로 이동
:bd :bdelete 현재 버퍼 삭제
:bw :bwipeout 현재 버퍼 완전 제거
:ls :buffers 버퍼 목록
:bn :bnext 다음 버퍼
:bp :bprevious 이전 버퍼
:sb :sbuffer split buffer

버퍼상태 확인 (:ls / :buffers )

  • 맨 앞의 숫자 (붉은색 박스): buffer number.
  • :ls / :buffers 의 플래그 : 각 버퍼의 상태 정보를 나타냄.
    • % : current buffer
    • # : alternate buffer
    • a : active 상태
    • h : hidden 상태
    • + : modified 상태 - 변경사항이 write 되지 않음.
    • - : 수정 없음 (아무것도 안 뜸).
    • = : read-only 상태.
  • 그다음 열은 buffer 와 관련된 파일 path
  • 각 버퍼의 현재 cursor가 있는 line 번호

윈도우 관련 명령어

개인적은론 tmux의 pane 을 보다 선호함:

tmux의 command prefix <Ctrl-b> 처럼 vim의 윈도우 관련 명령어는 <Ctrl-w>가 사용됨.

 

앞서 버퍼를 지정하여 윈도우로 여는 경우가 많지만, 윈도우만 만드는 것도 가능

:split        " 가로 분할 (위/아래)
:vsplit       " 세로 분할 (좌/우)
:sp           " :split 축약
:vs           " :vsplit 축약

:sb 3         " 가로 split + 3번 버퍼
:vert sb 3    " 세로 split + 3번 버퍼
  • " vimscript (vim에서 설정등에 사용됨) 에서의 주석 시작을 의미함.

닫기

:q            " 현재 window 닫기 (마지막이면 Vim 종료)
:close        " 현재 window 닫기 (마지막이면 실패)
:hide         " window 닫고 buffer 유지
:only         " 현재 window만 남기고 나머지 닫기

윈도우 번호 확인

:echo winnr() " 현재 윈도우 번호 확인.

 

설정에 다음을 추가해두어 윈도우 번호를 보는게 편함:

# VIM
:set statusline? " 현재 스테이터스 라인의 정보 확인 후
:set statusline=%f\ %y\ %m%r%h%w\ [%{winnr()}] " \ [%{winnr()}] 를 추가.


# LUA
-- Vim과 비슷하게: 각 window마다 statusline 표시
vim.opt.laststatus = 2

-- Vim 기본 느낌에 가까운 구성:
--  - 왼쪽: 파일명 + 상태 플래그
--  - 오른쪽: (줄,컬럼) + 파일 위치(Top/Bot/%) + window 번호
vim.opt.statusline = table.concat({
  "%<",        -- 너무 길면 왼쪽부터 잘라냄
  "%f",        -- 파일명 (상대경로)
  " ", "%h%m%r", -- help/modified/readonly 플래그
  "%=",        -- 좌/우 분리
  "%-14.(%l,%c%V%)", -- 줄/컬럼/비주얼컬럼 (Vim 기본에서 흔히 보던 형태)
  " ", "%P",   -- Top/Bot/All/퍼센트
  " ", "[%{winnr()}]", -- window 번호
}, "")

 


이동

<Ctrl-w> h   " 왼쪽 window
<Ctrl-w> j   " 아래 window
<Ctrl-w> k   " 위 window
<Ctrl-w> l   " 오른쪽 window

순환 및 번호 이동

<Ctrl-w> w   " 다음 window
<Ctrl-w> W   " 이전 window

<Ctrl-w> 2 w   " 2번 window로 이동

윈도우 자체 이동

<Ctrl-w> H   " 현재 window를 맨 왼쪽으로
<Ctrl-w> L   " 맨 오른쪽으로
<Ctrl-w> K   " 맨 위로
<Ctrl-w> J   " 맨 아래로

윈도우 크기 조절

<Ctrl-w> =      " 모든 window 크기 동일
<Ctrl-w> +      " 높이 증가
<Ctrl-w> -      " 높이 감소
<Ctrl-w> >      " 너비 증가
<Ctrl-w> <      " 너비 감소

같이보면 좋은 자료들

https://dsaint31.tistory.com/473

 

[Linux] vi (or vim) 사용법 정리

vi (or vim) 사용법 정리 더보기관련자료.https://ds31x.tistory.com/174 [CE] Text file: Text 파일이란?"text file" 은사람과 컴퓨터가 읽을 수 있고 처리할 수 있도록 encoding 된 characters 로 이루어진electric text lines

dsaint31.tistory.com

2023.11.19 - [Linux] - [Linux] tmux (Terminal MUltipleXer) 사용하기

 

[Linux] tmux (Terminal MUltipleXer) 사용하기

tmux는 terminal multiplexer로 단일 terminal에서여러 session으로 작업을 하면서각 session별로 여러 window (session을 웹브라우저라고 생각하면, window는 tab에 해당)로 나누어 작업할 수 있고동시에 각 window를

ds31x.tistory.com


 

728x90