VIM 명령어정리 1. 저장및종료 명령어 설명 :w 저장 :w file.txt file.txt 파일로저장 :w» file.txt file.tx파일에덧붙여서저장 :q vi 종료 :q! vi 강제종료 ZZ 저장후종료 :wq! 강제저장후종료 :e file.txt file.txt파일을불러옴 :e 현재파일을불러옴 :e# 바로이전에열었던파일을불러옴 2. 입력모드전환 a 커서위치다음칸부터입력 A 커서행의맨마지막부터입력 i 커서의위치에입력 I 커서행의맨앞에서부터입력 o 커서의다음행에입력 O 커서의이전행에입력 s 커서위치의한글자를지우고입력 cc 커서위치의한행을지우고입력 3. 이동 h 왼쪽으로이동 l 오른쪽으로이동 j 아래행으로이동 k 위행으로이동 w 또는 W 다음단어의첫글자로이동 b 또는 B 이전단어의첫글자로이동 e 또는 E 단어의마지막글자로이동 <CR> 다음행첫첫글자로이동 ^ 그행의첫글자로이동 $ 그행의마지막글자로이동 + 다음행의첫글자로이동 - 위행의첫글자로이동 ( 이전문장의첫글자로이동 ) 다음문장의첫글자로이동 { 이전문단으로이동 } 다음문단으로이동 H 커서를화면맨위로이동 z<cr> 현재행을화면의맨우로이동 M 커서를화면중안으로이동 z. 현재행을화면의중앙으로이동 L 커서를화면최하단으로이동 z- 현재행의화면의최하단으로이동 [n]h 커서를위에서 n행으로이동 [n]l 커서를아래에서 n행으로이동 ctrl+u 반화면위로스크롤 ctrl+d 반화면아래로스크롤 ctrl+b 한화면위로스크롤 ctrl+f 한화면아래스크롤 gg 또는 1G 문서의맨처음으로이동 G 문서의맨마지막행으로이동 [n]g 또는 :[n] n행으로이동 4. 삭제
x 또는 dl 커서위치의글자삭제 X 또는 dh 커서바로앞의글자삭제 dw 현재위치부터스페이스까지삭제 diw 현재위치에있는단어삭제 dd 커서가있는행을삭제 [n]dd 현재커서부터아래 n번째줄까지삭제 dj 현재커서와아래줄삭제 [n]dj 현재커서부터아래 n+1번째줄까지삭제 dk 현재커서와윗로 n+1번째줄까지삭제 [n]dk 현재커서와윗줄삭제 D 또는 d$ 현재커서가있는위치부터행끝까지삭제 d0 또는 d^ 현재커서가있는위치부터행시작까지삭제 5. 복사 & 붙여넣기 yy 또는 Y 커서가있는한행복사 p 현재커서에붙여넣기, 행복사일경우아래줄에붙여넣음. P 현재커서위치의앞행에붙여넣기, 행복사일경우에는윗줄에붙여넣음 [n]yy 또는 [n]y 커서가위치한이후로 n행복사 [n]p n번만큼붙여넣기반복 6. 블록지정 v 블록지정 V 줄단위블록지정 ctrl+v( 윈도우에서는 ctrl+q) 비쥬얼블록지정블록지정중명령 y 블록복사하기 r 치환 d 지정블록지우기 U 대문자로바꾸기 u 소문자로바꾸기 ~ 대소문자전환 J 행합침 : 선택영역에대하여 ex명령 < 행앞에탭제거 > 행앞에탭삽입 7. 문자열탐색및치환 /[ 문자열 ] 문자열탐색 :s/old/new 현재행의처음 old를 new로교체 :s/old/new/g 현재행의모든 old를 new로교체 :10,20s/old/new/g 10행부터 20행까지모든 old를 new로교체 [ 블록지정중 ]:s/old/new/g 지정블록내에서모든 old를 new로교체
:-3,+4s/old/new/g 현재커서위치에서위로 3행아래로 4행까지의 old를 new로교체 :%s/old/new/g 문서전체에서 old를 new로교체 :%s/old/new/gc 문서전체에서 old를 new로확인하며교체 :g/pattern/s/old/new/g pattern이있는모든행의 old를 new로교체 8. vim 정규표현식 ^ 행의첫문자 ([] 안에서는 not의의미 ) $ 행의끝. 아무문자나한문자의미 \ or의의미 [ ] [] 사이의문자중하나 \{min,max\} min이상 max이하반복됨 * 앞의내용이 0번이상반복됨 \+ 앞의내용이 1번이상반복됨 \< 단어의시작 \> 단어의끝 \n 새행문자 \t 탭문자 9. vim 확장정규표현문자열 \i 변수지정에사용되는문자들 [0-9A-Za-z] \I \i와같지만숫자는제외 \k keyword로사용하는문자 [_\.\-0-9A0Za-z] \f 파일이름으로사용하는문자 \p 프린트가능한문자 \P \p와같지만숫자는제외 \s whitespace character( 공백과탭 ) \S non-whitespace character \d 숫자 [0-9] \D 숫자가아닌문자 [^0-9] \x 16진수숫자 [0-9A-Fa-f] \X 16진수숫자가아닌문자 [^0-9A-Fa-f] \o 8진수숫자 [0-7] \O 8진수숫자가아닌문자 [^0-7] \w 영문단어의시작에사용되는문자 [0-9A-Za-z-] \W 영문단어에서사용되지않는문자 [^0-9A-Za-z-] \h 영문단어의시작에사용되는문자 [A-Za-z-] \H 영문단어의시작에사용되지않는문자 [^A-Za-z-] \a 모든알파벳 [A-Za-z] \A 알파벳이아닌문자 [^A-Za-z] \l 소문자 [a-z] \L 소문자가아닌문자 [a-z] \u 대문자 [A-Z] \U 대문자가아닌문자 [^A-Z]
\e Esc \t Tab \r 캐리지리턴 \b 백스페이스 \n 새행 10. POSIX 문자클래스 문자클래스 내용 [:alnum:] 알파벳과숫자 [A-Za-z0-9] [:alpha:] 알파벳 [A-Za-z] [:cntrl:] 제어문자 [:blank:] 탭과공백문자 [:digit:] 숫자 [0-9] [:graph:] 제어문자와공백무자를제외한문자 [:lower:] 소문자 [a-z] [:upper:] 대문자 [A-Z] [:print:] 제어문자를제외한문자, 즉프린터할수있는문자 [:punct:] [:graph:] 문자중 [:alnum:] 을제외한문자. ex)!,@,#,$,%,^... [:space:] 화이트스페이스 ex) 공백, 탭, 케리지리턴, 새행, 수직탭, 폼필드 [:xdigit:] 16진수 11. 파일버퍼 :files 또는 :ls 또는 :buffers 버퍼목록나열 :b[n] n번버퍼로이동 :bd[n] 또는 :bw[n] n번버퍼를삭제 (n이없으면현재의버퍼를삭제 ) :bp[n] 이전버퍼로이동,n을붙이면 n번만큼이전버퍼로이동 :bn[n] 이후버퍼로이동,n을붙이면 n번만큼이후버퍼로이동 :sb[n] 창을수평분할하여 n번버퍼를로드 :bf 첫번째버퍼로이동 :bl 마지막버퍼로이동 12. Tab Vim 7.0 부터추가된기능 :tabnew :tabnew b.txt :tabf b.txt :tabn[n] :tabp[n] :tabs :tabclose :tabfirst :tablast 새로운탭을열기 b.txt가존재하면열고, 없으면새로만들어서연다 b.txt가존재하면열고, 없으면에러발생다음탭을열기,n을붙이면 n번만큼이동이전탭을열기,n을붙이면 n번만큼이동탭목록보기탭을닫기첫번째탭을열기마지만탭을열기
:tabdo %s/old/new/g 모든탭에적용을원할때 ( 예모든탭에서 old 를 new 로변경 ) 13. 다중창관련명령 명령모드 ex모드 결과 창생성 CTRL-W s :[N]sp[plit] 현재파일을두개의수평창으로나눔 CTRL-W v :[N]vs[plit] 현재파일을두개의수직창으로나눔 CTRL-W n :new 새로운수평창생성 CTRL-W ^ 또는 CTRL-W CTRL-^ 수평창으로나누고이전파일의오픈 CTRL-W f 창을수평으로나누고커서위치의파일오픈 CTRL-W i 커서위치의단어가정의된파일을오픈창삭제 CTRL-W q :q[uit]! 현재커서의창을종료 CTRL-W c :close 현재커서의창닫기 CTRL-W o :on[ly] 현재커서의창만남기고모든창삭제 창이동 CTRL-W h 왼쪽창으로커서이동 CTRL-W j 아래쪽창으로커서이동 CTRL-W k 위쪽창으로커서이동 CTRL-W l 오른쪽창으로커서이동 CTRL-W w 창을순차적으로이동 CTRL-W p 가장최근에이동한방향으로이동 CTRL-W t 최상위창으로이동 CTRL-W b 최하위창으로이동 창이동 CTRL-W r 순착으로창의위치를순환 CTRL-W x 이전창과위치를바꿈 CTRL-W H 현재창을왼쪽큰화면으로이동 CTRL-W J 현재창을아래쪽큰화면으로이동 CTRL-W K 현재창을위쪽큰화면으로이동 CTRL-W L 현재창을오른쪽큰화면으로이동 창크기조정 CTRL-W = 창의크기를모두균등하게함 CTRL-W _ 수평분할에서창의크기를최대화 CTRL-W 수직분할에서창의크기를최대화 CTRL-W [N]+ :res[ize] +N 창의크기를 N행만큼증가 CTRL-W [N]- :res[ize] -N 창의크기를 N행만큼감소 CTRL-W [N]> 창의크기를오른쪽으로 N칸만큼증가 CTRL-W [N]< 창의크기를오른쪽으로 N칸만큼감소 다중창사용의경우대부분붙여서사용하는명령어는 CTRL 을같이눌러도똑같은역활을하는경우가많다. 예 ) CTRL-W j 는 CTRL-W CTRL-J 와같다.
14. 마킹및마킹위치로이동 m[a-z0-9] 파일내에서마킹, 현재버퍼내에서만이동함예 )ma m[a-z] 전체영역에서마킹, 다른파일로도이동함. `[A-Za-z0-9] 마킹된위치로돌아감예 )`a [A-Za-z0-9] 마킹된행의처으으로이동함. 예 ) a 직전에커서가위치하던행의처음 `` 직전의커서위치로이동 이전에 vim으로현재파일을닫았을때커서가있던행의처음으로이동 `" 이전에 vim으로현재파일을닫았을때커서가있던위치로이동 참고 : 유닉스프로그래밍필수유틸리티 ( 한빛미디어, 백창우 ( 저 )) vim/vim_ 명령어 _ 정리.txt 마지막수정 : 2007/05/31 14:08 작성자 nightz