본문 바로가기
my_lesson/_Vi

Vim - Vi 편집기 시작_ [ex 명령어 익히기 ]

by boolean 2016. 1. 14.
728x90

Vi Editer vi 편집기


ex 명령어 익히기


vi서 사용하는 ex 명령어는 이전 ex 편집기에서 지원하던 기능들입니다. ex 모드(콜론 모드)에서 사용하는 명령어는 열기(Open), 저장(Save), 다른 이름으로 저장(Save as) 등의 명령을 수행합니다. ex 모드는 Esc 키를 누르고 ':' 키를 입력하여 들어갈 수 있다는 것과 종료시의 명령어에 대해서는 앞에서 설명하였기에 생략하기로 하겠습니다.

ex 명령어의 기본형식


(범위지정) (명령어) (명령이 수행될 위치)
:k,l command m
예) 

- :40y _ 40번째줄 복사
- :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번줄 이 후로 옮기기

g 옵션 붙여 문서전체에 적용하기


- :g/리눅스 : 파일 전체에서 '리눅스'가 있는 마지막 줄로 이동한다
- :g/리눅스/ p : 파일 전체에서 '리눅스'가 있는 줄을 보여준다
- :g/리눅스/ nu : 파일 전체에서 '리눅스'가 있는 줄을 번호와 함께 보여준다
- :60,100 g/리눅스/ p : 60∼100줄 사이에서 '리눅스'가 있는 줄을 보여준다
- :g/리눅스/d : 문서 전체에서 '리눅스'가 있는 줄을 제거한다

저장 및 종료하기


- :w : 저장하기 (write)
- :q : 종료하기 (quit)
- :wq : 저장하고 종료하기
- :xv저장하고 종료하기 (: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 에 추가하기

읽기


- :f[ile] : 현재 열린파일정보 확인 // 일반모드에서는 Ctrl +G
- :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 읽어들이기

다중편집하기


vi file1 file2 :file1과 file2라는 두 개의 문서를 읽어들인다. 먼저 읽는 문서는 file1이다
- :args :현재 편집중인 화일목록을 보여준다
v - :n :두 번째 문서(file2)를 편집할 수 있다
- :e # :이후부터는 ':e #' 명령을 사용하여 문서를 번갈아 열며 편집할 수 있다
- :prev[ious] :이전화일로 돌아간다
주의 - 편집중인 화일이 저장되지 않으면 다음 화일로 넘어갈수 없다
* * 새로운 파일 편집하기
- :e file1:새로운 파일(file1)을 읽어들여 편집한다
- e[dit] file_name :새로운 file_name 편집하기
- :e! :현재의 편집중인 내용을 무시하고 가장 최근에 편집한 내용을 다시편집하기

g 옵션과 바꾸기


- :m,n s/old/new/g - :g/pattern/ s/old/new/g
예 )
: 1,5 s/리눅스/linuk/gc :1줄부터 5 줄까지 리눅스를 linuk 로 확인해가면서 바꾼다.
:g/문자 /s/파일/file/g : '문자'가 있는줄만을 찾아서 '파일'을 'file'로 바꾼다.
:% s/버퍼/buffer/g :처음줄부터 마지막줄까지, 버퍼 를 buffer 로 바꾼다.
* * 프로그램 소스 코드에서 괄호 짝 찾기
프로그램이나 HTML 소스에는 수많은 괄호(< >, ,…)가 사용되게 마련입니다. 때문에 편집을 하다 보면 괄호의 짝을 잃어버려 프로그램 오류가 나는 경우도 빈번합니다. 이럴 때 vi는 편리한 기능을 제공합니다. 해당 괄호 위에 커서를 놓은 후 키를 누르면 짝이 되는 괄호의 위치로 이동합니다.




댓글