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번째 줄로 이동%: 괄호 쌍 매칭 위치로 점프 (예: { → }, ( → ))>>,<<: 현재 줄 오른쪽/왼쪽 들여쓰기