개요
Vim = 모달(modal) 에디터. 상황에 따라 모드가 바뀌고, 같은 키가 모드마다 다르게 동작한다. 거의 모든 리눅스 서버에 기본 설치돼 있어, 원격에서 파일을 고칠 때 최소한의 손감각이 필요하다.
- normal mode = 기본 모드. 이동, 삭제, 복사 등 명령 실행. 실행 직후 이 상태.
- insert mode = 실제 텍스트 입력.
- visual mode = 영역 선택.
- 모드 탈출은
Esc로 normal 로 복귀.
실행
vi test.pyinsert mode 진입
i= 커서 앞에서 입력 (insert)a= 커서 뒤에서 입력 (append)o= 아래에 새 줄 열고 입력
커서 이동
normal mode 에서 이동한다.
h/j/k/l= 왼쪽 / 아래 / 위 / 오른쪽H/L= 화면 최상단 / 최하단으로 (M= 화면 중앙)w/e= 다음 단어 시작 / 단어 끝으로 (구두점도 경계로 취급)W/E= 공백 기준 WORD 단위 이동Ctrl + f/Ctrl + b= 한 화면 앞으로 / 뒤로 (forward / back)Ctrl + e/Ctrl + y= 한 줄씩 아래로 / 위로 스크롤 (커서 위치 유지)
normal mode 에서 수정
x= 커서 위치 한 글자 삭제d= 삭제 오퍼레이터 (dw단어 삭제 등 이동키와 조합)dd= 한 줄 삭제y= 복사(yank) 오퍼레이터yy= 한 줄 복사p= 붙여넣기 (paste)u= 실행 취소 (undo)Ctrl + r= 다시 실행 (redo)
시스템 클립보드 연동
"+y= 시스템 클립보드로 복사"+p= 시스템 클립보드에서 붙여넣기"+= 시스템 클립보드 레지스터 지정. (기본y/p는 vim 내부 레지스터만 사용)
이동 후 수정
cib= 현재 줄에 있는 괄호 안 내용을 제거하고 바로 insert mode 로 진입ci"= 현재 줄에 있는 문자열 안 내용을 제거하고 바로 insert mode 로 진입ciw= 현재 커서에 있는 전체 word 를 제거하고 바로 insert mode 로 진입da"= 현재 줄에 있는 문자열("something")을 잘라냄I= 현재 줄 맨 앞에서 insert mode 로 진입A= 현재 줄 맨 마지막에서 insert mode 로 진입
저장, 종료
:w= 저장 (write):q= 종료 (quit):wq= 저장 후 종료:wq!= 저장 후 강제 종료:q!= 저장 안 하고 강제 종료
여러 줄 동시 수정
VISUAL BLOCK 로 여러 줄에 같은 편집을 한 번에 적용한다.
Ctrl + v로 VISUAL BLOCK 진입G로 맨 밑까지(또는j로 원하는 범위까지) 블록 확장I로 문자 삽입 /x로 문자 제거Esc두 번으로 전 줄에 적용
여러 줄 주석 처리
V로 해당 줄 선택5j로 아래 5줄 더 선택gc로 주석 처리/해제