VIM EDITOR v1.0
from 유닉스 쉘 바이블 | 엘리 쿼글리 | 케이앤피 IT
1. VIM EDITOR MODE
INSERT MODE : 본문에 커서가 있는 상태
COMMAND MODE : shift + ; 를 입력해 최하단의 라인
2. VIM EDITOR SAMPLE
<vim 실행전>
#vim {file_name) –c {command}, vi {file_name} è 파일 오픈 후 command 실행
# vim –b {file_name} è binary 타입으로 오픈
# vim –C {file_name} è compatible mode vim 을 vi와 같이 사용
# vim –m {file_name} è file 수정을 비활성화. buffer 수정은 가능하나 저장 안됨
# vim –M {file_name} è file 수정도 buffer 수정도 안됨
# vim –n {file_name} è swap file 사용을 안한다. 사용상 나타난 에러에 대해 복구 불가능
# vim –R {file_name} è Read-Only Mode 로 Open 한다. 버퍼내용은 수정가능
<COMMAND MODE>
: ( Shift + ; ) + [num] è num 의 line 으로 이동
/ + {pat} è pattern 검색 (커서 밑방향)
? + {pat} è pattern 검색 (커서 윗방향)
<INSERT MODE>
H, J, K, L è 좌, 하, 상, 우
^, 0, $ è 줄의 시작으로 이동(^,0), 줄의 끝으로 이동
b, w, e è 이전단어의 첫글자, 다음단어의 첫글자, 다음단어의 마지막글자
a, A è 커서의 다음 위치에 입력, 라인의 마지막 위치 다음에 입력(공백포함)
i, I è 커서위치 앞에 입력, 라인의 (공백을 제외한) 첫 문자에 입력
o, O è cursor 밑줄에 입력, cursor 윗줄에 입력
dd, dw è 라인삭제, 커서를 기준으로 우측문자열 삭제
R è Overtype Mode, Insert Key 사용하는 것과 동일
u, U è Undo
p,P è
(dd : 라인삭제의 경우) 커서의 밑으로 버퍼내용을 붙인다, 커서 위치에 버퍼내용을 붙인다.
(dw : 커서위치에서 단어만큼 삭제) 커서위치에 잘라낸 내용을 붙인다.
메타문자
^ 줄의시작 : /^sam è sam 으로 시작하는 라인을 찾는다.
$ 줄의 끝 : /sam$ è sam 다음 바로 개행문자가 오는 라인을 찾는다.
. 한 개문자를 대체한다 : /s.m è s + (문자하나) + m 단어를 찾는다.
* 0개 이상 문자와 일치 : /s*m è s + (문자0개이상) + m 단어를 찾는다.
[] 설정 중 한 문자와 일치 : /s[aA]m è sam, sAm 을 찾는다.
[x?y] 설정한 범위한의 한 문자와 일치 : /s[a-z]m è s + (a 에서 z 중 문자 하나) + m
/s[a-A]m è 에러 발생 (E16 : Invalid range)
[^ ] 설정에 속하지 않는 한 문자와 일치 : s[^z]m è s + (z 를 제외한 문자 하나) + m
\ 메타문자 기능제거 è \ + 메타문자 사용하면 메타문자 기능을 비활성화
\< : 단어의 시작
\> : 단어의 끝
<응용편>
/[A?Z]..$ è (A~Z 문자 하나) + (임의의 문자 하나) + (임의의 문자 하나) + (개행문자)
/^[A?Z]..$ è
(A~Z 문자 하나로 라인시작) + (임의의 문자 하나) + (임의의 문자 하나) + (개행문자)
/^[^A?Z]..$ è
(A~Z 아닌 문자 하나로 라인시작) + (임의의 문자 하나) + (임의의 문자 하나) +
(개행문자)
/^[A?Z][a?z]*3[0?5] è
(대문자 A~Z) + (소문자 a~z) + (임의의 0개 이상의 문자) + 3 + (0~5 값 하나)
/[a?z]* \. è (a~z 문자하나) + (임의의 0개 이상의 문자) + . (마침표 : 역슬래쉬는 메타문자를 비활성화 한다.)
/ *[A?Z][a?z][a?z]$ è (임의의 0개 이상의 문자) + (A~Z 문자하나) + (a~z 문자하나) + (a~z 문자하나) + (개행문자)
/^[A?Za?z]*[^,][A?Za?z]*$ è (라인의 첫 문자가 A~Z 이거나 a~z 인 문자하나) + (임의의 0개 이상의 문자) + (, 가 없으며) + (문자가 A~Z 이거나 a~z 인 문자하나) + (임의의 0개 이상의 문자) + (개행문자)
/^ *[A?Z][a?z][a?z]$ è (라인이 0개 이상의 문자로 시작) + (A~Z 문자하나) +
(a~z 문자하나) + (a~z 문자하나) + (개행문자)
3. VIM 의 응용
l 아래의 예는 모두 command line 에서의 예시이다.
<문자의 치환>
:1,$s/hello/Hello/g è 1(첫째줄) ~ $(마지막줄) 에 대해 s (문자치환) 를 수행하되 hello 를 Hello 로 변경을 하며 해당사항이 발견되어도 횟수에 관계없이 전부 수행 (g) 해라
:s/\ (oracle\) and \ (mysql\)/ \2 and \1/ è between oracle and mysql 을 between mysql and oracle 로 변환한다.
<문자 편집>
:1,$s/^/#/g è 전라인의 첫 줄에 #를 삽입한다.
:1,$s/##//g è 전라인의 ## 를 제거한다.
:10,20s/^/#/g è 10 ~ 20 라인의 첫 줄에 #를 삽입한다.
:10,20s/##//g è 10 ~ 20 라인의 ## 를 제거한다.