Vim 기초 가이드: 모드와 핵심 명령어 정리

Vim의 주요 동작 모드

Vim은 작업 목적에 따라 다양한 모드를 제공하며, 각 모드는 특정한 편집 작업을 수행하도록 설계되어 있습니다. 가장 기본이 되는 모드는 다음과 같습니다.

  • 일반 모드 (Normal Mode): 명령 입력 및 커서 이동 중심.
  • 삽입 모드 (Insert Mode): 텍스트 입력 전용.
  • 시각적 모드 (Visual Mode): 텍스트 블록 선택.
  • 명령행 모드 (Command-line Mode): 하단에 콜론(:) 입력 후 설정, 저장, 검색 등 수행.

삽입 모드 진입 방법

키 입력 기능 설명
i 커서 앞에서 삽입 시작
I 현재 줄의 맨 앞으로 이동 후 삽입
a 커서 뒤에서 삽입 시작
A 현재 줄의 맨 끝으로 이동 후 삽입
o 아래쪽에 새 줄 추가 후 삽입 모드 진입
O 위쪽에 새 줄 추가 후 삽입 모드 진입
s 현재 문자 삭제 후 삽입
S 현재 줄 전체 삭제 후 삽입

삭제 및 범위 지정 (d + motion)

Vim에서는 d 명령어와 함께 이동 명령(motion)을 조합하여 정밀하게 텍스트를 제거할 수 있습니다.

명령어 설명
d$ 커서 위치부터 줄 끝까지 삭제
d0 커서 위치(제외)부터 줄 시작까지 삭제
dw 다음 단어 시작점까지 삭제 (공백 포함)
de 현재 단어 끝까지 삭제
db 이전 단어 시작점까지 삭제
dd 현재 줄 전체 삭제
dG 현재 위치부터 파일 끝까지 삭제
dgg 현재 위치부터 파일 처음까지 삭제

복사 및 붙여넣기

Vim은 삭제나 복사 시 내용을 내부 버퍼(레지스터)에 저장합니다.

  • yy: 현재 줄 복사 (예: 3yy → 3줄 복사)
  • yw: 다음 단어 시작점까지 복사
  • y$: 커서부터 줄 끝까지 복사
  • p: 버퍼 내용을 커서 뒤에 붙여넣기
  • P: 버퍼 내용을 커서 앞에 붙여넣기

참고: 줄 단위 복사 시 p는 다음 줄에, 단어 단위 시 p는 바로 뒤에 삽입됩니다.

수정 명령어 (c)

c 명령은 삭제 후 자동으로 삽입 모드로 전환됩니다.

명령어 기능
cw 다음 단어까지 삭제하고 삽입 모드 진입
cc 현재 줄 전체 삭제 후 삽입
c$ 커서부터 줄 끝까지 삭제 후 삽입
ciw 현재 단어 전체를 변경 (inner word)

취소 및 재실행

  • u: 마지막 수정 취소
  • U: 현재 줄에 대한 모든 변경 일괄 취소
  • Ctrl + r: 취소된 작업 다시 실행

검색 및 치환

  • /검색어: 아래 방향으로 검색
  • ?검색어: 위 방향으로 검색
  • n: 다음 일치 항목으로 이동
  • N: 이전 일치 항목으로 이동

하이라이트 해제:

:nohl

기본 치환 명령어:

  • :s/old/new/: 현재 줄의 첫 번째 'old'를 'new'로 변경
  • :s/old/new/g: 현재 줄의 모든 'old'를 변경
  • :%s/old/new/g: 전체 파일에서 일괄 변경
  • :%s/old/new/gc: 변경 전 사용자 확인 요청
  • :2,5s/old/new/g: 2~5행 사이만 변경

파일 및 창 관리

다른 명령어 실행:

:!ls

→ 외부 명령어 실행 가능 (예: 현재 디렉터리 목록 보기)

저장 관련:

  • :w filename: 현재 내용을 새 파일로 저장
  • v → 텍스트 선택 후 :w out.txt: 선택 영역만 별도 저장
  • :r filename: 다른 파일 내용을 현재 위치에 삽입

분할 화면으로 멀티 파일 편집

  • vim -O file1.txt file2.txt: 수평 분할
  • vim -o file1.txt file2.txt: 수직 분할

창 이동:

  • Ctrl + w + w: 다음 창으로 전환
  • Ctrl + w + ↑/↓: 수평 분할 시 상하 이동
  • Ctrl + w + ←/→: 수직 분할 시 좌우 이동

모든 창 닫기:

  • :qa – 모두 닫기 (변경 사항 없을 때)
  • :wqa – 저장 후 모두 종료

기타 유용한 명령

  • Ctrl + g: 현재 파일 정보 및 커서 위치 확인
  • 10G 또는 :10: 10번째 줄로 이동
  • %: 괄호 쌍 매칭 위치로 점프 (예: { → }, ( → ))
  • >>, <<: 현재 줄 오른쪽/왼쪽 들여쓰기

태그: vim text editing linux commands command-line editor productivity tools

5월 27일 01:34에 게시됨