Vim 명령어 정리 (1편) — 모드, 이동, 편집, 저장

2026. 5. 24. 15:13·블로그, 컴퓨터/Cheatsheets

터미널 명령어를 정리하고 나니 자연스럽게 vim 얘기로 넘어가게 됩니다. 서버에 붙어서 파일 하나 수정해야 할 때 vim 말고 다른 선택지가 없는 경우가 꽤 있거든요. 근데 처음에 열었다가 나가지도 못해서 터미널 창을 그냥 닫았다는 얘기는 vim 입문 경험담에 단골로 등장하는 이야기이기도 합니다.

사실 vim이 어렵다기보다는, 기존 에디터와 작동 방식 자체가 다른 게 문제입니다. 그 핵심이 "모드"인데, 이걸 이해하고 나면 나머지는 생각보다 빠르게 익혀집니다.

1편에서는 모드 개념, 이동, 기본 편집(삽입/삭제/복사), 저장과 종료를 다룹니다.


모드(Mode) 개념부터

vim이 처음에 낯선 가장 큰 이유는 "모드"가 있기 때문입니다. 일반 에디터는 파일을 열면 바로 타이핑하면 되는데, vim은 그렇지 않습니다.

vim에는 크게 네 가지 모드가 있습니다.

모드 진입 방법 하는 일
Normal Esc (기본 시작 모드) 이동, 삭제, 복사 등 명령 입력
Insert i, a, o 등 텍스트 직접 입력
Visual v, V, Ctrl+v 텍스트 범위 선택
Command : 저장, 종료, 치환 등

vim을 처음 열면 Normal 모드입니다. 여기서는 키보드 입력이 명령어로 해석됩니다. j를 누르면 j가 타이핑되는 게 아니라 커서가 아래로 이동하는 식입니다.

텍스트를 입력하려면 Insert 모드로 전환해야 하고, 입력을 마치면 Esc로 Normal 모드로 돌아옵니다. 이 흐름이 vim의 기본 리듬입니다.

Normal → Insert: i, a, o 등으로 진입
Insert → Normal: Esc
Normal → Command: :
Normal → Visual: v


기본 이동

Normal 모드에서 방향키 대신 h, j, k, l을 씁니다.

h ← 왼쪽
j ↓ 아래
k ↑ 위
l → 오른쪽

방향키로도 이동되긴 하는데, 홈포지션에서 손을 안 떼고 쓸 수 있어서 익숙해지면 h/j/k/l이 훨씬 편합니다. 처음엔 어색하지만 의도적으로 써보면 생각보다 빨리 손에 붙습니다.

단어 단위 이동

w    다음 단어의 시작으로
b    이전 단어의 시작으로
e    현재(또는 다음) 단어의 끝으로
W    공백 기준 다음 단어 (구두점 무시)
B    공백 기준 이전 단어

w와 W의 차이는 hello-world에서 드러납니다. w는 hello, -, world를 각각 단어로 보고, W는 hello-world 전체를 하나로 봅니다.

줄 내 이동

0    줄의 맨 처음 (공백 포함)
^    줄의 첫 번째 비공백 문자
$    줄의 맨 끝

파일 전체 이동

gg   파일 맨 처음으로
G    파일 맨 끝으로
:n   n번째 줄로 이동 (예: :30)
Ctrl+d   반 페이지 아래로
Ctrl+u   반 페이지 위로
Ctrl+f   한 페이지 아래로
Ctrl+b   한 페이지 위로

숫자 조합

이동 명령어 앞에 숫자를 붙이면 그 횟수만큼 반복합니다. vim에서 가장 강력한 패턴 중 하나입니다.

5j      아래로 5줄 이동
3w      세 단어 앞으로
10k     위로 10줄

Insert 모드 진입

Normal 모드에서 Insert로 들어가는 방법이 여러 가지 있는데, 어디서 커서가 위치하냐에 따라 다르게 씁니다.

i    현재 커서 앞에서 삽입
a    현재 커서 뒤에서 삽입
o    현재 줄 아래에 새 줄 만들고 삽입
I    현재 줄 맨 앞에서 삽입
A    현재 줄 맨 끝에서 삽입
O    현재 줄 위에 새 줄 만들고 삽입

가장 자주 쓰는 건 i, a, o 세 가지입니다. 줄 끝에 뭔가 추가할 때는 A, 새 줄을 아래에 만들 때는 o가 편합니다.


삭제

삭제 명령어는 Normal 모드에서 씁니다. 삭제된 내용은 클립보드(레지스터)에 저장되기 때문에 p로 붙여넣기도 됩니다. 즉 삭제와 잘라내기가 같습니다.

x       커서 위치 문자 하나 삭제
X       커서 앞 문자 하나 삭제
dd      현재 줄 전체 삭제
D       커서부터 줄 끝까지 삭제
dw      커서부터 다음 단어 시작까지 삭제
de      커서부터 단어 끝까지 삭제
d$      커서부터 줄 끝까지 삭제 (D와 같음)
d0      커서부터 줄 처음까지 삭제
dgg     현재 줄부터 파일 처음까지 삭제
dG      현재 줄부터 파일 끝까지 삭제

여기서도 숫자 조합이 됩니다.

3dd     세 줄 삭제
5x      다섯 글자 삭제
2dw     두 단어 삭제

c (change)

c는 삭제 후 바로 Insert 모드로 전환합니다. 지우고 다시 입력하려는 경우에 쓰면 편합니다.

cw      단어 삭제 후 Insert
cc      줄 전체 삭제 후 Insert
C       커서부터 줄 끝까지 삭제 후 Insert

복사 & 붙여넣기

vim에서 복사는 "yank"라고 부릅니다. y가 복사 키입니다.

yy      현재 줄 복사
yw      현재 단어 복사
y$      커서부터 줄 끝까지 복사
ygg     현재 줄부터 파일 처음까지 복사
yG      현재 줄부터 파일 끝까지 복사

붙여넣기는 p와 P입니다.

p    커서 뒤(또는 아래 줄)에 붙여넣기
P    커서 앞(또는 위 줄)에 붙여넣기

dd로 줄을 잘라내고 다른 위치에서 p를 누르면 잘라낸 줄이 붙여넣어집니다. 줄 이동할 때 유용합니다.

숫자 조합도 됩니다.

3yy     세 줄 복사

되돌리기 & 다시 실행

u           되돌리기 (undo)
Ctrl+r      다시 실행 (redo)
U           현재 줄 변경 전체 되돌리기
.           직전 명령 반복 (매우 유용)

.은 특히 자주 씁니다. 같은 작업을 여러 줄에 반복할 때 강력합니다. 예를 들어 dd로 줄을 지우고 나서 .을 누르면 또 지워집니다.


저장 & 종료

Command 모드(:)에서 씁니다.

:w          저장 (write)
:q          종료 (quit) — 변경사항 없을 때만
:wq         저장 후 종료
:q!         저장 없이 강제 종료
:wq!        강제 저장 후 종료 (읽기 전용 파일 등)
ZZ          저장 후 종료 (:wq와 같음, Normal 모드에서)
ZQ          저장 없이 종료 (:q!와 같음, Normal 모드에서)

:w filename처럼 파일명을 지정하면 다른 이름으로 저장합니다.

처음에 vim에서 못 나오는 이유가 여기 있습니다. :q!를 모르면 나갈 방법이 없어 보이거든요. 일단 Esc를 눌러서 Normal 모드로 돌아온 뒤 :q!를 치면 무조건 나올 수 있습니다.


정리 표

분류 명령어 동작
모드 i a o Insert 진입 (앞 / 뒤 / 새 줄 아래)
모드 I A O Insert 진입 (줄 앞 / 줄 끝 / 새 줄 위)
모드 Esc Normal로 복귀
이동 h j k l ← ↓ ↑ →
이동 w b e 단어 앞 / 뒤 / 끝
이동 0 ^ $ 줄 처음 / 첫 비공백 / 줄 끝
이동 gg G 파일 처음 / 끝
이동 Ctrl+d Ctrl+u 반 페이지 아래 / 위
삭제 x dd dw 문자 / 줄 / 단어 삭제
삭제 D d$ 커서~줄 끝 삭제
변경 cw cc C 삭제 + Insert 진입
복사 yy yw 줄 / 단어 복사
붙여넣기 p P 뒤 / 앞에 붙여넣기
되돌리기 u Ctrl+r undo / redo
반복 . 직전 명령 반복
저장/종료 :w :q :wq :q! 저장 / 종료 / 저장+종료 / 강제종료

2편에서는 검색과 치환, Visual 모드, 분할 화면, 그리고 알아두면 편한 설정들을 정리합니다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'블로그, 컴퓨터 > Cheatsheets' 카테고리의 다른 글

Neovim 설정 정리 (2편) — lazy.nvim, LSP, 주요 플러그인  (0) 2026.05.25
Neovim 설정 정리 (1편) — init.lua 구조와 Lua 기초  (0) 2026.05.25
Vim 명령어 정리 (2편) — 검색/치환, Visual 모드, 분할 화면, 설정  (0) 2026.05.24
리눅스 터미널 명령어 정리 (2편) — 권한, 프로세스, 네트워크, 검색 & 파이프  (0) 2026.05.23
리눅스 터미널 명령어 정리 (1편) — 파일 탐색, 관리, 내용 확인  (0) 2026.05.23
'블로그, 컴퓨터/Cheatsheets' 카테고리의 다른 글
  • Neovim 설정 정리 (1편) — init.lua 구조와 Lua 기초
  • Vim 명령어 정리 (2편) — 검색/치환, Visual 모드, 분할 화면, 설정
  • 리눅스 터미널 명령어 정리 (2편) — 권한, 프로세스, 네트워크, 검색 & 파이프
  • 리눅스 터미널 명령어 정리 (1편) — 파일 탐색, 관리, 내용 확인
생각사람
생각사람
지극히 사적인 연구실
  • 생각사람
    생각사람의 별장
    생각사람
  • 전체
    오늘
    어제
    • 분류 전체보기 (207) N
      • 금융 (57)
        • 주식 공부 (11)
        • 파생상품 입문 (17)
        • 파생상품 기초 (15)
        • 파생상품 실전 (14)
      • 블로그, 컴퓨터 (83) N
        • 프로그래밍 (16)
        • DevOps (8)
        • AI, RL, ML, ... (5)
        • 애드센스, SEO (23)
        • 임베디드 (3)
        • 컴퓨터 관련 (7)
        • Cheatsheets (21) N
      • 다른 공부들 (67)
        • 읽고 쓰기 (18)
        • 수학 (15)
        • 물리 (9)
        • 사진 공부 (25)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 태그

    스트랭글
    오펜하이머
    선물 옵션
    소니 a6000
    c++
    파생상품
    GIT
    github
    깃
    옵션 투자
    선형대수학
    Kreyszig
    AI
    양자역학
    웹크롤러
    슈뢰딩거 방정식
    옵션
    c
    스트래들
    독후감
    version control
    CheatSheet
    행렬
    cmake
    깃허브
    벡터
    코딩
    프로그래밍
    구글 애드센스
    공업수학
  • hELLO· Designed By정상우.v4.10.6
생각사람
Vim 명령어 정리 (1편) — 모드, 이동, 편집, 저장
상단으로

티스토리툴바