본문 바로가기

UNIX

VIM Editor v1.0

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 라인의 ## 를 제거한다.