vi의 실행 vi Quick Reference vi - 파일을 열지 않고 vi 상태로 들어감 vi file - 지정한 file을 vi에서 열기 vi -R file - 읽기 전용 모드로 file을 vi에서 열기 Mode의 종류 및 변경 자동으로 esc 키 -------> <------- Last Line Mode Command Mode Insert Mode <------- -------> :, /, ? a, i, ...
Insert Mode (입력 모드) i : 커서 앞에서 입력 a : 커서 다음에서 입력 I : 행의 처음에서 입력 A : 행의 끝에서 입력 5i : 커서 앞에서 5회 반복 입력 3a : 커서 다음에서 3회 반복 입력 5I : 행의 처음에서 5회 반복 입력 3A : 행의 끝에서 3회 반복 입력 o : 아래 행에서 입력 O : 윗행에서 입력 s : 한 문자 교체 7s : 7개 문자 교체 S : 현재 행 교체(= cc) 3S : 3행 교체(= 3cc) C : 현 문자부터 그 행 교체 R : 현 문자부터 그 행을 덮어쓰며 교체	Command Mode (명령 모드) h : 왼쪽으로 커서 이동 j : 아래쪽으로 커서 이동 k : 위쪽으로 커서 이동 l : 오른쪽으로 커서 이동 G : 마지막 행으로 이동 3G : 3행으로 이동 0 : 행의 처음으로 이동(숫자 zero임) $ : 행의 끝으로 이동 ^ : 현재 행의 공백 아닌 첫 문자로 이동 H : (Home) 화면의 첫 행, 처음(첫 열)으로 이동 M : (Middle)화면의 중간 행, 처음으로 이동 L : (Last) 화면의 마지막 행, 처음으로 이동 w : 다음 단어의 첫 문자로 이동 W : 다음 단어의 첫 문자로 이동(문장 부호 무시) e : 다음 단어의 끝 문자로 이동 E : 다음 단어의 끝 문자로 이동(문장 부호 무시) b : 이전 단어의 첫 문자로 이동 B : 이전 단어의 첫 문자로 이동(문장 부호 무시) 3w : 3단어 다음 단어의 첫 문자로 이동 3b : 3단어 앞의 첫 문자로 이동 - : 커서를 이전 행의 처음으로 이동 + : 다음 행의 처음으로 이동 ( : 이전 문장의 처음으로 이동 ) : 다음 문장의 처음으로 이동 { : 이전 문단의 처음으로 이동 } : 다음 문단의 처음으로 이동 n : 순방향 검색 반복(위쪽이든 아래쪽이든) N : 역방향 검색 반복 x : 커서 위치의 한 문자 삭제 X : 커서 왼쪽의 한 문자 삭제 3x : 커서 위치부터 3 문자 삭제 3X : 커서 왼쪽의 3 문자 삭제 dw : 한 단어 삭제 3dw : 세 단어 삭제 dd : 한 행 삭제 d0 : 행의 처음부터 커서 이전까지 삭제 d$ : 커서부터 행의 끝까지 삭제 (= D) D : 커서부터 행의 끝까지 삭제 dG : 커서 이후 마지막 행까지 삭제 . : 이전 명령 반복 u : 이전 명령 취소(계속 취소 가능) U : 버퍼에 현재 행을 복사(= Y = yy) Y : 버퍼에 현재 행을 복사 yy : 버퍼에 현재 행을 복사 5Y : 현재행부터 5행을 버퍼에 복사 p : 현재 커서 아랫줄에 버퍼 내용을 복사(삽입) P : 현재 커서의 윗줄에 버퍼 내용을 복사 J : 두 행(현재 행과 다음 행)을 결합(junk) 3J : 현재행부터 3행을 결합 >> : 현재 행을 오른쪽으로 tab만큼 이동(shift) 3>> : 현재부터 3행을 tab만큼 shift << : 현재 행을 왼쪽으로 tab만큼 shift Ctrl-d : 반 화면 아래로(down) Ctrl-u : 반 화면 위로(up) Ctrl-f : 한 화면 아래로(foreward) Ctrl-b : 한 화면 위로(backward) 3Ctrl-b : 3 화면 위로. ZZ : 저장 후 빠져나감 (ZZ = :x = :wq) r : 한 문자 교체(교체 후 입력모드가 아닌 명령모드) 3r : 세 문자를 같은 한 문자로 교체 ~ : 대소문자 변경 3~ : 3문자에 대한 대소문자 변경
Last Line Mode (끝행 모드) /exp : exp를 현재부터 아래로 검색 ?exp : exp를 현재부터 위로 검색 :set number : 행번호를 보여준다 :set nonumber : 행번호를 안 보여준다 :!command : 셀 명령어 수행(ex. :!ls) :shell : 셀로 빠져나감. 복귀는 exit. :map : 정의된 매크로 보기 :map a com : a가 com과 같도록 매크로 정의 (ex. :map q 32G ;명령모드에서 q를 누르면 32행으로 감) :w : 현재 내용을 open한 이름으로 저장(write) :w file : 현재 내용을 file로 저장 :w >> file : 현재 내용을 file에 추가 :w! file : 현재 내용을 강제로 file에 저장 :q : vi에서 빠져나감(quit) :q! : vi에서 강제로 빠져나감(저장 안 함) :wq : 저장하고 빠져나감(write and quit). (= :x) :x : 저장하고 빠져나감(save and exit) :f : 현재 line의 상태 :r : 버퍼의 파일 read(읽기. 삽입) :r file : 지정한 file을 read :e : 현재 파일을 다시 edit :e! : 현재 파일을 강제로 edit(버퍼의 내용 무시) :e file : 지정한 file을 edit :e! file : 지정한 file을 강제로 edit :3 :3행으로 커서 이동 (= 3G ;명령모드에서) :3d : 3행을 삭제 :3m8 : 3행을 8행 다음으로 이동(move) :3co8 : 3행을 8행 아래에 복사(copy) :3t8 : 3행을 8행 아래에 복사 :3w file : 3행을 file에 저장 :3,8d : 3-8행을 삭제 :3,8m12 : 3-8행을 12행 다음으로 이동 :3,8co12 : 3-8행을 12행 다음으로 복사(= :3,8t12) :3,8w file : 3-8행을 file에 저장 :s/old/new : 현재 행부터 처음의 old를 new로 바꿈 :s/old/new/g : 현재 행부터 모든 old를 new로 바꿈 :3s/old/new : 3행 중에서 old를 new로 바꿈 :3,8s/old/new : 3-8행 중에서 old를 new로 바꿈 :3,$s/old/new : 3행 이후로 old를 new로 바꿈 :%s/old/new : 모든 행에서 처음의 old를 new로 :%s/old/new/g : 모든 행에서 모든 old를 new로 :s/old/&new/ : old에 new를 추가 Tip :%s/^M//g : ascii file에 대한 dos-to-unix 변환 (여기서, ^M은 Ctrl-V, Ctrl-M 으로 찍어야 한다.)

vi Quick Reference

만든이: 진태식(http://mathman.pe.kr)