- 출처 : http://blog.naver.com/nada119/10109695260 -
vi 에디터
1. 터미널의 타입 설정
% setenv TERM vt100 <= C 쉘의 경우
$ export TERM=vt100 <= Bourne 쉘 또는 Korn 쉘의 경우
2. 사용모드
vi 사용모드는 크게 입력모드(Insert mode)외 명령모드(command mode)로 나뉜다.
3. 입력모드
i : i 명령어를 이용하여 입력모드로 전환하게 되면 현재 커서가 있는 위치에서부터 문자입력을 시작할 수 있다.
a : a 명령어를 이용하면 현재 커서의 다음 위치에서 문자입력을 시작 할 수 있다.
o : o를 이용하면 현재 커서의 다음라인에 새로 한줄이 추가되면서 문자입력을 할 수 있다.
O : O의 경우에는 현재 커서의 윗라인에 새로 한줄이 추가되면서 문자입력을 할 수 있다.
4. 명령모드
입력모드에서 명령모드로 다시 전환하려면 'esc'키를 눌러주면 된다.
- 커서 이동 명령
h : 커서가 왼쪽으로 한 글자 이동
l : 커서가 오른쪽으로 한글자 이동
j : 커서가 다음 라인으로 이동
k : 커서가 위의 라인으로 이동
Ctrl-f : 컨트롤키와 f 키를 누르면 커서가 다음(아래) 화면으로 이동
Ctrl-b : 커서가 이전(위) 화면으로 이동
Ctrl-d : 커서가 화면의 반만큼 다음으로 이동
Ctrl-u : 커서가 화면의 반만큼 위로 이동
- 텍스트 삭제 명령
x : 현재 커서의 다음 글자를 하나 삭제
dd : 커서가 위치한 라인을 삭제
dw : 커서가 위치한 단어를 삭제
u : 마지막에 실행했던 명령을 취소
- 텍스트 추가 수정
r : 커서의 문자를 다른 문자로 변환할 수 있도록 만듦
s : 하나의 문자를 수정할 수 있도록 해주는데 입력모드로 모드가 변경됨
cw : 커서의 단어를 다른 단어로 변환할 수 있도록 해줌
cc : 커서의 전체 행을 다른 내용으로 변환할 수 있도록 해줌
J : 커서의 라인과 다음 라인을 합칠 떄 사용
- 텍스트 복사(copy) 붙여넣기(paste)
yy : 커서가 위치한 라인 전체 copy
숫자yy : 커서 아래로 숫자만큼의 라인 수 copy
yw : 커서가 있는 단어 copy
y$ : 커서부터 라인 끝까지 copy
y^ : 커서부터 라인 처음까지 copy
p : copy한 내용을 커서 다음 라인에 붙여넣기 (paste)
- 텍스트 문자열 검색
/ : 명령모드에서 / 를 치게되면 화면에서 제일 마지막 줄에 커서가 위치하게 되는데 이때 검색어를 넣고 Enter 키를 치면됨
그리고 나면 검색어와 동일한 문자나 문자열이 있는 곳에 커서가 위치하게 된다.
만일 더 검색하고자 하면 n이나 N 키워드를 이용하면 된다. n은 커서의 아래로 검색, N은 커서 위로 검색됨
5. 콜론모드
명령모드 상에서 콜론(:)을 누르게 되면 화면 제일 하단에 커서가 위치하면서 명령어를 입력받는 모드로 변하게 됨
:w :지금까지 편집한 내용을 파일로 저장하게 됨. w 뒤에 파일명을 입력하면 해당 파일에 저장 됨
:q : vi가 종료된다. 만일 저장되지 않은 내용이 있으면 저장되지 않았다고 경고 메시지기가 나오며,
저장상태와 상관없이 종료하기를 원하면 :q! 를 사용하면 된다.
:wq : 편집한 내용을 저장하고 종료한다
:e filename : 편집하고자 하는 파일을 불러온다
:f filename : 해당 파일의 내용이 삽입된다.
- 콜론 모드 상에서 쉘 명령어 실행
일반 명령 모드에서 콜론을 눌러 콜론 모드로 진입한 다음 !명령어 또는 !sh 를 사용하면 된다.
이렇게 하면 vi를 종료하지 않고도 원하는 명령을 실행시킬 수 있다.
이 때 :!명령어 를 사용한 경우에는 명령이 실행된 다음 엔터키를 누르면 vi 에디터를 다시 사용할 수 있다.
:!sh 를 사용하게 되면, vi 에디터에서 빠져나와 쉘 프롬프트가 나타나게 된다. 이 상태에서 원하는 명령어들을 실행시키면 된다. 원하는 작업을 수행한다음 exit 명령을 실행시키면 이전 vi 화면으로 복귀된다.
- 콜론모드에서 문자열 변환 방법
만일 파일 속에 있는 모든 abcde 문자열을 fghij로 바꾸고 싶으면 다음과 같다
:1,$/abcde/fghij/g
위의 문장에서 1,$는 문서의 시작과 끝을 명시한 것이고 s 는 변환을 의미하는 키워드이며 abcde 는 원래의 문자열을 그리고 fghij는 새롭게 바꾸고자 하는 문자열을 의미한다. 마지막 g 키워드는 한 행에 abcde가 여러개 있을 때 모든 것을 fghij로 바꾸라는 것을 지정한 것이다.
- 콜론모드에서 vi 에디터 환경 설정
:set number <= 또는 :set nu : 에디터에 라인넘버가 왼쪽에 오게 만든다
:set nonumber <= 또는 : set nonu :에디터에 라인넘버가 사라진다
:set all : vi 에디터의 환경변수들을 모두 본다
- vi 에디터 환경 변수들
autowrite(aw) : 쉘로 빠져나간다든지 할 때 파일을 저장시킨다.
autoident(ai) : 탭으로 들여쓰기를 할 때 그 범위등을 지정한다.
showmatch(sm) : 괄호가 닫히는 곳에 커서가 위치하면 괄호가 시작되는 곳을 알려준다.
ignorecase(ic) : 문자열을 검색하거나 할 때 대소문자를 구분하지 않도록 한다.