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
'utils' 카테고리의 다른 글
| johngrib의 vimwiki + github.io 를 설치하기 (0) | 2026.01.14 |
|---|---|
| vimwiki/vimwiki (neovim의 init.lua로 설정) (0) | 2026.01.14 |
| vim-startify (neovim의 init.lua로 설정) (0) | 2026.01.14 |
| vim-plug 설치하기 (neovim의 init.lua로 설정) (0) | 2026.01.13 |
| wget - Web Get (0) | 2026.01.10 |