[Vim 시리즈 3편] 모드 완벽 이해와 커서 이동

한국어 버전

Vim의 핵심은 모드(Mode) 개념입니다. 이번 편에서는 3가지 주요 모드를 직접 전환해 보고, 다양한 커서 이동 명령어를 실습합니다.


이 글에서 할 것

  • 3가지 모드(Normal, Insert, Command) 완벽 이해
  • hjkl로 커서 이동하기
  • 단어/문장/문서 단위 이동 마스터
  • 화면 이동 방법 익히기

준비물

  • Vim이 설치된 터미널
  • 연습용 텍스트 파일

실습 준비

테스트 파일 생성

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을 실행하면 초기 화면을 확인할 수 있습니다.

Vim 파일 열기 zsh · ~/workspace
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 -- 표시가 나타납니다.

i → Insert 모드 zsh · ~/workspace
Ready. Press Replay to run the scripted session.

체크포인트: -- INSERT -- 표시 확인

실행: 아무 텍스트나 입력해 보기

Normal 모드로 복귀

Esc 를 누르면 Insert 모드에서 Normal 모드로 돌아갑니다.

ESC → Normal 모드 zsh · ~/workspace
Ready. Press Replay to run the scripted session.

화면 변화: -- INSERT -- 표시 사라짐

Command 모드로 전환

: 를 누르면 화면 맨 아래에 콜론이 표시됩니다.

: → Command 모드 zsh · ~/workspace
Ready. Press Replay to run the scripted session.

화면 변화:

  • 커서가 화면 맨 아래로 이동
  • : 표시 나타남

Command 모드 취소

ESC로 취소 zsh · ~/workspace
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로 이동하는 결과를 확인해 보세요.

hjkl 이동 실습 zsh · ~/workspace
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 이전 단어 시작

아래 터미널에서 단어 단위 이동 결과를 확인해 보세요.

단어 단위 이동 (w, e, b) zsh · ~/workspace
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

아래 터미널에서 줄 이동 명령어 결과를 확인해 보세요.

줄 이동 (0, ^, $) zsh · ~/workspace
Ready. Press Replay to run the scripted session.

문서 단위 이동

명령어 결과 설명
gg 파일 첫 줄 소문자 g 두 번
G 파일 마지막 줄 대문자 G
5G 5번째 줄 숫자 + G
50% 파일 중간 퍼센트 위치

아래 터미널에서 문서 단위 이동 결과를 확인해 보세요.

문서 단위 이동 (gg, G, 5G) zsh · ~/workspace
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              # 이전 검색 결과

실습 완료 체크리스트

  • i / ESC / : 모드 전환 가능
  • hjkl로 커서 이동 가능
  • w / e / b로 단어 단위 이동 가능
  • 0 / $로 줄 시작/끝 이동 가능
  • gg / G로 문서 처음/끝 이동 가능
  • Ctrl+f / Ctrl+b로 화면 스크롤 가능
  • H / M / L로 화면 내 이동 가능

다음 편

👉 Vim 시리즈 4편: 편집 명령어 - 삭제, 복사, 붙여넣기

💬 댓글

이 글에 대한 의견을 남겨주세요