모드
모드 전환
i삽입 모드 (커서 앞)
a삽입 모드 (커서 뒤)
o아래에 줄 삽입 후 삽입 모드
O위에 줄 삽입 후 삽입 모드
v비주얼 모드 (문자)
V비주얼 모드 (줄)
Ctrl+v블록 비주얼 모드
:명령줄 모드
R교체 모드
Esc일반 모드로 돌아가기
내비게이션
문자 및 줄 이동
h j k l왼쪽, 아래, 위, 오른쪽
0 / ^줄의 시작 / 첫 번째 비공백
$줄의 끝
w / W다음 단어 / WORD
b / B이전 단어 / WORD
e / E단어 / WORD의 끝
f{c} / F{c}문자를 앞 / 뒤로 찾기
t{c} / T{c}문자 직전/직후까지 앞 / 뒤로 이동
화면 및 파일 이동
gg / G첫 번째 / 마지막 줄로
:{n}n번째 줄로
Ctrl+d / Ctrl+u반 페이지 아래 / 위
Ctrl+f / Ctrl+b전체 페이지 아래 / 위
H / M / L화면의 위 / 중간 / 아래
%대응하는 괄호로 이동
편집
삽입 및 추가
I줄의 시작에 삽입
A줄의 끝에 추가
ea단어 끝에 추가
gi마지막 삽입 위치에 삽입
삭제 및 변경
x / X커서 아래 / 앞의 문자 삭제
dd줄 삭제
dw단어 삭제
d$ / D줄 끝까지 삭제
cc / S줄 전체 변경
cw단어 변경
c$ / C줄 끝까지 변경
ci" / ci(따옴표 / 괄호 안 변경
복사 및 붙여넣기
yy줄 얀크 (복사)
yw단어 얀크
y$줄 끝까지 얀크
p / P커서 뒤 / 앞에 붙여넣기
J아래 줄을 현재 줄에 결합
되돌리기 및 반복
u실행 취소
Ctrl+r다시 실행
.마지막 명령 반복
검색 및 치환
검색
/pattern앞으로 검색
?pattern뒤로 검색
n / N다음 / 이전 일치
*커서 아래 단어 앞으로 검색
#커서 아래 단어 뒤로 검색
치환
:s/old/new/ " replace first on line :s/old/new/g " replace all on line :%s/old/new/g " replace all in file :%s/old/new/gc " replace all, confirm each
비주얼 모드
선택
v문자 선택 시작
V줄 선택 시작
Ctrl+v블록 선택 시작
o선택 반대편 끝으로 이동
gv마지막 비주얼 선택 재선택
선택에 대한 동작
d선택 삭제
y선택 얀크
c선택 변경
>선택 들여쓰기
<선택 내어쓰기
~대소문자 전환
U / u선택을 대문자 / 소문자로
버퍼 및 윈도우
버퍼
:ls열린 버퍼 목록
:bn / :bp다음 / 이전 버퍼
:b{n}버퍼 n으로 이동
:bd현재 버퍼 닫기
:e file새 버퍼에서 파일 열기
윈도우
:sp file수평 분할
:vsp file수직 분할
Ctrl+w h/j/k/l윈도우로 이동
Ctrl+w =윈도우 크기 균등화
Ctrl+w q윈도우 닫기
:tabnew file새 탭에서 파일 열기
gt / gT다음 / 이전 탭
:tabclose현재 탭 닫기
레지스터
레지스터 사용
"ay레지스터 a에 얀크
"ap레지스터 a에서 붙여넣기
"Ay레지스터 a에 얀크 추가
:reg모든 레지스터 표시
특수 레지스터
""이름 없음 (마지막 삭제/얀크)
"0마지막 얀크
"+시스템 클립보드
"/"마지막 검색 패턴
".마지막 삽입 텍스트
"_블랙홀 (버림)
매크로
기록 및 재생
q{a}레지스터 a에 매크로 기록 시작
q기록 중지
@{a}레지스터 a의 매크로 재생
@@마지막 매크로 재실행
5@a매크로 a를 5번 재생
매크로 예제
qa " start recording into a I// " insert // at line start Esc j " return to normal, move down q " stop recording 10@a " comment next 10 lines
설정
일반 옵션
:set number " show line numbers :set relativenumber " relative line numbers :set tabstop=4 " tab width :set expandtab " spaces instead of tabs :set ignorecase " case-insensitive search
표시 및 동작
:set wrap / nowrap " toggle line wrapping :set hlsearch " highlight search matches :set incsearch " incremental search :set cursorline " highlight current line :syntax on " enable syntax highlighting
파일 작업
저장 및 종료
:w저장
:w file다른 이름으로 저장
:q종료 (저장 안 됐으면 실패)
:q!저장 없이 종료
:wq / :x / ZZ저장 후 종료
:wa모든 버퍼 저장
:qa모든 버퍼 종료
파일 정보 및 외부
Ctrl+g파일 정보 표시
:!cmd셸 명령 실행
:r !cmd명령 출력 삽입
:r file파일 내용 삽입
텍스트 객체
내부 및 주변 객체
iw / aw단어 내부 / 주변
is / as문장 내부 / 주변
ip / ap단락 내부 / 주변
i" / a"큰따옴표 내부 / 주변
i' / a'작은따옴표 내부 / 주변
i( / a(괄호 내부 / 주변
i{ / a{중괄호 내부 / 주변
it / atHTML 태그 내부 / 주변
자주 쓰는 조합
ciw " change inner word di" " delete inside quotes ya{ " yank around braces vip " select inner paragraph
마크 및 점프
마크
m{a}커서 위치에 마크 a 설정
'a마크 a의 줄로 이동
`a마크 a의 정확한 위치로 이동
:marks모든 마크 목록
점프 목록
Ctrl+o이전 위치로 이동
Ctrl+i다음 위치로 이동
:jumps점프 목록 표시
''마지막 점프 위치로 이동