관리 메뉴

드럼치는 프로그래머

[Linux] VI 레퍼런스 본문

★─Programing/☆─Linux

[Linux] VI 레퍼런스

드럼치는한동이 2007. 8. 6. 17:24
1. 미리 알아두어야 할것들 1.1 VI 명령어 모드 3 가지 ## 1) ESC 모드 2) 편집모드 3) 콜론모드(ex모드) 1.2 VI 명령어의 간단한 문법 (반복횟수)(편집명령)(반복횟수)(커서이동명령) 현재의 위치에서 커서 이동명령의 내용대로 문서의 임의위치로 이동하는 순간, 편집명령어의 내용이 수행된다. 1.3 ESC 모드에서 사용되는 몇가지 기호 G : 화일의 맨끝 ^ : 현재줄의 맨앞 (빈칸무시) 0 : 현재줄의 맨앞 $ : 현재줄의 맨뒤 % : 짝을 이루는 기호 확인하기 w : 다음 단어 b : 이전 단어 e : 현재 단어의 끝 글자 1.4 여러가지 특수한 기호들 . : 한글자를 대표하는 기호 (dos 의 ? 와 동일) * : 여러개의 문자를 동시에 대표하는 기호 ^ : 줄의 처음시작. $ : 줄의 맨끝. % : 처음줄부터 끝줄까지 : 특수한 기호들이 가지는 뜻을 없앨때 사용. [ ] : 일정한 제한을 두어 글자를 대표하고자 하는 기호. [a-z] : a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z 를 대표 [A-Z] : A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z 를 대표 [AB] : A 또는 B p[aeiou]t: pat, pet, pit, pot, put 를 대표 [0-9] : 0,1,2,3,4,5,6,7,8,9 를 대표 2. 커서 움직이기 2.1 글자 단위 이동 위쪽으로 k 사선을 옆으로 그어 놓은 이유는 보통 초보자들이 h, l 은 잘 구별하는 반면 왼쪽으로 h l 오른쪽으로 k, j 를 항상 혼동하기 때문이다 j 항상 h,j k,l 로 기억해두면 잊지않 게 된다. 아래쪽으로 2.2 줄 단위 이동 ^ : 줄의 맨앞으로 (빈칸무시) 0 : 줄의 맨앞으로 $ : 줄의 맨뒤로 % : 짝을 이루는 기호 확인하기 + : 다음줄의 첫번째 글자로 - : 윗줄의 첫번째 글자로 n| : 현재줄의 n 번째 열로 (n은 임의의 숫자) H : 화면상에 처음줄로 M : 화면상의 중간줄로 L : 화면상의 마지막줄로 nH : 화면상의 처음줄로부터 n 줄 밑으로 nL : 화면상의 마지막줄로부터 n 줄 위로 G : 맨 마지막줄로 (go) nG : n 번째줄로 gg : 맨 마지막줄로 ngg : n 번째줄로 :n : n 번째줄로 2.3 단어 단위 이동 w : 한단어 오른쪽으로 (word) b : 한단어 왼쪽으로 (back) e : 현재 단어의 끝으로 이동 (end) E : 현재 단어의 끝으로 이동 (구두점 무시 - 영문자에 해당 - ? . !.) ) : 다음 문장의 시작으로 ( : 이전 문장의 시작으로 } : 다음 문단의 시작으로 { : 이전 문단의 시작으로 ]] : 다음 섹션의 시작으로 [[ : 이전 섹션의 시작으로 2.4 화면단위 이동 Control - F(orward) 한화면 밑으로 이동. Control - B(ackward) 한화면 위로 이동. Control - D(own) 반쪽화면 밑으로 이동. Control - U(pon) 반쪽화면 위로 이동. Control - E 커서는 현재위치 그대로 화면만 한줄씩 위로 이동 Control - Y 커서는 현재위치 그대로 화면만 한줄씩 아래로 이동 z 커서의 위치와 함께, 화면상의 맨위로 nz n번 라인을 화면상의 맨위로 z. 커서의 위치와 함께, 화면상의 중간으로 z- 커서의 위치와 함께, 화면상의 맨아래로 ## Control - G 현재 편집문서의 정보 보여주기 ## Control - L 화면 재표시 (글자가 깨졌을경우) ## Control - R(edraw) 화면 재표시 (글자가 깨졌을경우) 3. 편집하기 3.1 복사, 붙이기, 합치기 y : (Yank) 복사하기 yy 한줄복사 2yy 두줄복사 nyy n줄 복사 (n 은 임의의숫자) yw 한단어 복사 y2w 두단어 복사 y$ 그줄 끝까지 복사 y0(y^) 그줄 처음까지 복사 yG 문서의 끝까지 복사 Y 한줄복사 (yy 와 동일) ## 마지막 명령어의 반복 ## . : 마지막에 수행한 명령어를 반복한다. 2. 명령어를 2번 반복한다. p : (Put or Paste) 붙이기 p 아래로(오른쪽으로) 붙이기 2p 아래로(오른쪽으로) 두번 붙이기 P 위로(왼쪽으로) 붙이기 2P 위로(왼쪽으로) 두번 붙이기 J : (Join) 두줄 합치기 J 현재줄을 윗줄에 붙이기 (두줄 합치기) 3J 세줄합치기 3.2 지우기, 복구하기, 바꾸기 d : (Delete) 지우기 dd 한줄지우기 2dd 두줄지우기 ndd n줄지우기 (n 은 임의의숫자) dw 한단어 지우기 d2w 두단어 지우기 d$ 그줄 끝까지 지우기 d0(d^) 그줄 처음까지 지우기 dG 문서 끝까지 지우기 D 그줄 끝까지 지우기 (d$ 와 동일) u : (Undo) 복구하기 u 한번복구하기 2u 두번복구하기 c : (Change) 바꾸기 cc 한줄바꾸기 2cc 두줄바꾸기 ncc 여러줄 바꾸기 (n 은 임의의숫자) cw 한단어 바꾸기 ce 한단어 바꾸기 (공백 제외) c2w 두단어 바꾸기 c$ 그줄 끝까지 바꾸기 c0(c^) 문서 끝까지 바꾸기 C 그줄 끝까지 바꾸기 (c$ 와 동일) r : (Replace) 한글자 바꾸기 r 한글자 바꾸기 2r 두글자 바꾸기 ## r 명령어는 insert 모드로 바뀌지 않는다. ## R : 바꾸면서 덮어 쓰기 s : 한글자 지우고 insert 모드로 - cl 와 동일 - S : 한줄지우고 insert 모드로 - cc 와 동일 - ~ : 대문자 <-> 소문자 바꾸기 - 영문자에만 해당 - ## 지우기와 바꾸기의 차이점은 바꾸기 명령어 후에 ## ## vi 편집모드로 바뀐다. ## 4. 찾기 /pattern pattern 이라는 단어 찾기 - 위에서 아래로 ?pattern scully 라는 단어찾기 - 아래에서 위로 / : 찾기반복 - 위에서 아래로 n : 찾기반복 - 위에서 아래로 ? : 찾기반복 - 아래에서 위로 N : 찾기반복 - 아래에서 위로 fx : 현재줄에서 x문자 찾기 - x 는 한개의 글자 - Fx : 현재줄에서 반대방향으로 x문자 찾기 - x 는 한개의 글자 - tx : 현재줄에서 x문자를 찾아서 바로전에 커서놓기 Tx : 현재줄에서 반대방향으로 x문자를 찾아서 바로후에 커서놓기 ; : 현재줄에서 한글자 찾기반복 ' : 현재줄에서 한글자 찾기반복 - 반대방향으로 - ## 찾기와 편집명령의 응용 ## d/simple simple 이라는 단어가 나올때까지 지우기 d/^scully 줄의 맨앞에 scully 라는 단어가 나올때까지 지우기 y/yahoo yahoo 라는 단어가 나올때까지 복사하기 5. 편집모드 지정하기 i : insert 현재커서위치 10i* * 문자를 10개 집어넣기 25i=- =- 를 25개 반복하기 I : 현재커서가 위치한 줄의 맨처음에 a : append 현재커서위치 바로 다음에 A : 현재커서가 위치한 줄의 맨끝에 o : open 현재커서위치 바로 아래줄에 O : Open 현재커서위치 바로 윗줄에 6. 위치 기억하기 mx : mark 현재의 커서위치를 x 라는 문자로 기억 `x : 기억된 x 위치로 이동 `` : 이동하기 전의 위치로 (제자리) 'x : 기억된 x 위치의 맨 앞으로 이동 '' : 이동하기 전 위치의 맨앞으로 이동 7. 버퍼 이용하기 "xyy : x 라는 이름의 버퍼에 한줄 복사 하기 "xp : x 라는 이름의 버퍼에 저장된 내용을 붙이기 ## 잠시 쉬었다 가기 ## := 현재 줄번호 보여주기 :/pattern/ = pattern 이 위치한 줄번호 보여주기 8. ex 명령어 익히기 8.1 ex 명령어의 기본형식 :k,l command m (범위지정) (명령어) (명령이 수행될 위치) ---------------------------------------- 예) :1,10 co 50 1 줄 부터 10 줄 까지를 50 줄 이후로 복사. :34,50 d 34 줄 부터 50 줄 까지 삭제. :100,150 m 10 100 줄 부터 150 줄까지를 10 줄 이후로 옮김. :.,$ d 현재줄부터 끝까지 지우기 :.,+20 co -4 현재줄부터 20줄을, 4줄 위에 복사하기 :-,+ t 0 위, 아래로 한줄(총 3줄)씩을, 문서 맨위에 복사하기 :/pattern/ d pattern 이 들어있는 줄 지우기 :/pattern/ -nd pattern 이 들어있는 줄로부터 n 번째 윗줄 지우기 :/pattern/ +nd pattern 이 들어있는 줄로부터 n 번째 아랫줄 지우기 :/pattern1/,/pattern2/ d pattern1 이 들어있는 줄부터, pattern2 가 들어있는 줄까지 지우기 :.,/pattern/ m 23 현재줄부터 pattern 이 들어있는 줄까지, 23번줄 이후로 옮기기 8.2 g 옵션 붙이기 :g/pattern 화일전체에서 마지막으로 pattern 이 쓰여진 줄로 가기 :g/pattern/ p 화일전체에서 pattern 이 있는줄 보여주기 :g/pattern/ nu 화일전체에서 patterm 이 있는줄을 번호와 함께 보여주기 :60,124 g/pattern/ p 60,124 줄 사이에서 pattern 이 들어있는줄 보여주기 8.3 저장 및 종료하기 :w 저장하기 (write) :q 종료하기 (quit) :wq 저장하고 종료하기 :x 저장하고 종료하기 (:wq 와 동일) :w! 강제로 저장하기 (read-only 로 열었을경우) :q! 편집한 내용을 저장하지 않고 종료하기 :w new_file_name 새로운 파일이름으로 저장하기 :w %.new 현재화일 이름에 .new 를 붙여서 새로운 화일로 저장. :230,$ w file_name 230 줄부터 끝줄까지 file_name 으로 저장하기 :.,600 w file_name 현재줄부터 600줄까지 file_name 으로 저장하기 :1,10 w new_file 1줄부터 10줄까지 new_file 로 저장하기 :340,$ w >> new_file 340줄부터 끝줄까지 new_file 에 추가하기 8.4 읽기 :r[ead] filename 현재위치에 filename 읽어들이기 :r /usr/local/data 현재위치에 /usr/local/data 읽어들이기 :185 r /usr/local/data 185줄 이후에 /usr/local/data 읽어들이기 :$ r /usr/local/data 맨끝줄 이후에 /usr/local/data 읽어들이기 :0 r /usr/local/data 맨윗줄에 /usr/local/data 읽어들이기 :/pattern/ r /usr/local/data pattern 이 존재하는 줄에 /usr/local/data 읽어들이기 8.5 다중편집하기 vi file1 file2 file3 :args 편집중인 화일목록 보여주기 :n[ext] 다음 화일로 넘어가기 :prev[ious] 이전화일로 돌아가기 ## 편집중인 화일이 저장되지 않으면 다음 화일로 넘어갈수 없다. ## 새로운 화일 편집하기 :e[dit] file_name 새로운 file_name 편집하기. :e! 현재의 편집중인 내용을 무시하고 가장 최근에 편집한 내용을 다시편집하기 8.6 g 옵션과 바꾸기 :m,n s/old/new/g :g/pattern/ s/old/new/g ------------------------- :1,30 s/his/the/gc 1 줄부터 30 줄까지 his 를 the 로 바꾸면서 확인하기. :g/BX/ s/Esc/ESC/g BX가 있는줄만 찾아서 Esc 를 ESC 로 바꾸기. :% s/editer/editor/g 처음줄부터 마지막줄까지, editer 를 editor 로 바꾸기 :g/editer/ s//editor/g 위와 동일("s/" 다음에 인자가 없어서 윗줄과 같은효과)
원본 : VI 레퍼런스
Comments