Vim의 핵심은 모드(Mode) 개념입니다. 이번 편에서는 3가지 주요 모드를 직접 전환해 보고, 다양한 커서 이동 명령어를 실습합니다.
이 글에서 할 것
- 3가지 모드(Normal, Insert, Command) 완벽 이해
- hjkl로 커서 이동하기
- 단어/문장/문서 단위 이동 마스터
- 화면 이동 방법 익히기
준비물
실습 준비
테스트 파일 생성
cd ~
cat > test-nav.txt << 'EOF'
Line 1: Welcome to Vim navigation
Line 2: Learning hjkl movement
Line 3: Words can be jumped
Line 4: With w e b commands
Line 5: This is the fifth line here
Line 6: Almost at the end
Line 7: Final line of this file
EOF
Vim으로 파일 열기
아래 터미널에서 Vim을 실행하면 초기 화면을 확인할 수 있습니다.
Ready. Press Replay to run the scripted session.
실습 1: 모드 전환 마스터
현재 상태 확인 (Normal 모드)
초기 화면:
Line 1: Welcome to Vim navigation
Line 2: Learning hjkl movement
Line 3: Words can be jumped
~
"test-nav.txt" 7L, 183B 1,1 All
상태 확인법:
- 화면 아래에 아무 표시도 없음 = Normal 모드
-- INSERT -- 표시 = Insert 모드
: 표시 = Command 모드
Insert 모드로 전환
i 를 누르면 화면 아래에 -- INSERT -- 표시가 나타납니다.
Ready. Press Replay to run the scripted session.
체크포인트: -- INSERT -- 표시 확인
실행: 아무 텍스트나 입력해 보기
Normal 모드로 복귀
Esc 를 누르면 Insert 모드에서 Normal 모드로 돌아갑니다.
Ready. Press Replay to run the scripted session.
화면 변화: -- INSERT -- 표시 사라짐
Command 모드로 전환
: 를 누르면 화면 맨 아래에 콜론이 표시됩니다.
Ready. Press Replay to run the scripted session.
Ready. Press Replay to run the scripted session.
화면 변화: : 표시 사라짐, Normal 모드로 복귀
모드 요약
┌─────────────────┐ i,a,o,I,A,O ┌─────────────────┐
│ Normal 모드 │ ───────────────────→ │ Insert 모드 │
│ (명령 모드) │ │ (입력 모드) │
│ │ ←─────────────────── │ │
│ - 커서 이동 │ ESC │ - 텍스트 입력 │
│ - 명령 실행 │ │ │
│ - 복사/붙여넣기│ │ │
└────────┬────────┘ └─────────────────┘
│
│ :
↓
┌─────────────────┐
│ Command 모드 │
│ (명령줄 모드) │
│ │
│ - :w (저장) │
│ - :q (종료) │
│ - :wq (저장+종료)│
└─────────────────┘
실습 2: hjkl 이동
파일 재시작 (깨끗한 상태)
# Vim에서 먼저 나가기
:q!
# 다시 열기
vim test-nav.txt
hjkl 기본 이동
준비: 파일 맨 위에서 시작 (gg 누르기)
실습 순서:
| 키 |
방향 |
실행 횟수 |
결과 위치 |
j |
아래 |
3번 |
Line 4 |
k |
위 |
1번 |
Line 3 |
l |
오른쪽 |
10번 |
"Words can~"의 "n" |
h |
왼쪽 |
5번 |
"Words ca~"의 "c" |
아래 터미널에서 j, k, l, h로 이동하는 결과를 확인해 보세요.
Ready. Press Replay to run the scripted session.
왜 hjkl일까요?
- 키보드에서
j 키 아래에 약간의 돌기(범프)가 있음 = 기준점
- 타이핑 시 손이 홈 로우(Home Row)에 위치
- 화살표 키로 이동하면 손 위치가 바뀌어 느림
문제 해결: 화살표 키가 안 될 때
문제: 방향키를 누를 때 "A", "B", "C", "D"가 입력됨
원인: 터미널 설정 문제
해결:
# ~/.vimrc에 추가
set nocompatible
set term=xterm-256color
실습 3: 단어 단위 이동
w, e, b 명령어
파일 위치: Line 1의 맨 앞에서 시작
1. w (word) - 다음 단어 시작으로 이동
| 키 |
결과 위치 |
설명 |
w |
"Welcome"의 W |
첫 단어 시작 |
w |
"to"의 t |
다음 단어 시작 |
w |
"Vim"의 V |
다음 단어 시작 |
2. e (end) - 현재/다음 단어 끝으로 이동
| 키 |
결과 위치 |
설명 |
e |
"navigation"의 n |
단어 끝 |
3. b (back) - 이전 단어 시작으로 이동
| 키 |
결과 위치 |
설명 |
b |
"Vim"의 V |
이전 단어 시작 |
b |
"to"의 t |
이전 단어 시작 |
b |
"Welcome"의 W |
이전 단어 시작 |
아래 터미널에서 단어 단위 이동 결과를 확인해 보세요.
Ready. Press Replay to run the scripted session.
단어 이동 비교
Line 1: Welcome to Vim navigation
^ ^ ^ ^
b←─────w──w──w→
^ ^ ^
e←─e──e→
실습 4: 문장/문서 이동
줄 단위 이동
파일: test-nav.txt (Line 1~7)
| 명령어 |
결과 |
설명 |
0 |
줄의 맨 앞 |
숫자 0 |
^ |
줄의 첫 글자 |
Shift+6 |
$ |
줄의 맨 끝 |
Shift+4 |
아래 터미널에서 줄 이동 명령어 결과를 확인해 보세요.
Ready. Press Replay to run the scripted session.
문서 단위 이동
| 명령어 |
결과 |
설명 |
gg |
파일 첫 줄 |
소문자 g 두 번 |
G |
파일 마지막 줄 |
대문자 G |
5G |
5번째 줄 |
숫자 + G |
50% |
파일 중간 |
퍼센트 위치 |
아래 터미널에서 문서 단위 이동 결과를 확인해 보세요.
Ready. Press Replay to run the scripted session.
실습 5: 화면 이동
화면 스크롤
먼저 큰 파일 만들기:
# Vim 종료 후
:q
# 대용량 테스트 파일 생성
seq 1 100 > bigfile.txt
vim bigfile.txt
화면 이동 명령어:
| 명령어 |
결과 |
설명 |
Ctrl+f |
한 화면 아래 |
forward |
Ctrl+b |
한 화면 위 |
backward |
Ctrl+d |
반 화면 아래 |
down |
Ctrl+u |
반 화면 위 |
up |
화면 내 이동
| 명령어 |
결과 |
설명 |
H |
화면 맨 위 |
High |
M |
화면 중간 |
Middle |
L |
화면 맨 아래 |
Low |
이동 명령어 총정리
기본 이동
| 명령어 |
설명 |
비유 |
h |
왼쪽 |
← 화살표 |
j |
아래 |
↓ 화살표 |
k |
위 |
↑ 화살표 |
l |
오른쪽 |
→ 화살표 |
단어 이동
| 명령어 |
설명 |
w |
다음 단어 시작 |
e |
현재/다음 단어 끝 |
b |
이전 단어 시작 |
줄 이동
| 명령어 |
설명 |
0 |
줄 맨 앞 |
^ |
줄 첫 글자 (공백 제외) |
$ |
줄 맨 끝 |
문서 이동
| 명령어 |
설명 |
gg |
첫 줄 |
G |
마지막 줄 |
nG |
n번째 줄 |
화면 이동
| 명령어 |
설명 |
Ctrl+f |
한 화면 아래 |
Ctrl+b |
한 화면 위 |
H |
화면 맨 위 |
M |
화면 중간 |
L |
화면 맨 아래 |
팁: 효율적인 이동
1. 숫자 + 명령어 = 반복
5j → 아래로 5줄 이동
3w → 다음 단어 3번 이동
10k → 위로 10줄 이동
2. 이동 vs 편집의 차이
# 비효율적
llllllli # 오른쪽으로 8번 이동 후 수정
# 효율적
$ # 줄 끝으로 이동
A # 줄 끝에서 Insert 모드
3. 검색으로 빠른 이동
/Line 5 # "Line 5" 검색
n # 다음 검색 결과
N # 이전 검색 결과
실습 완료 체크리스트
다음 편
👉 Vim 시리즈 4편: 편집 명령어 - 삭제, 복사, 붙여넣기
💬 댓글
이 글에 대한 의견을 남겨주세요