unix

vi 에디터 사용법

jeeyong 2008. 5. 7. 10:38
1. vi 실행 방법
 
커맨드 라인에서 다음과 같이 입력하면, 인자로 입력한 이름의 파일을 편집할 수 있습니다.

$ vi 파일_이름...
 
파일의 이름에는 다수의 파일 이름을 넣을 수 있으며, vi 내에서 :n 명령으로 다음 파일로 넘어 갈 수 있습니다.
 
2. vi 실행 모드

vi 에디터는 크게 명령 모드와 입력 모드로 나눌 수 있고, 명령 모드에는 vi 명령 모드와 ex 명령 모드가 있습니다. vi 시작시, vi 명령 모드로 시작하며, 특정 키를 눌러, 입력 모드 및 ex 명령 모드로 전환할 수 있습니다. vi 명령 모드로 돌아오기 위해서는, Esc(Escape)키를 누르면 됩니다.
 
아래에, 입력 모드 및 명령 모드에서, 자주 사용되는 명령어를 적어 보았습니다(이것은 제가 선호하는 명령들로, 실제로는 훨씬 다양한 명령들이 있습니다).
 
실질적으로 vi 에디터를 이용하여 편집 작업을 하기 전에, 아래의 명령들을 전부 다 사용해 보시기 바랍니다. 어떤 명령들은 너무 강력해서 수습하기 어려운 경우도 있으니, 각각의 명령들의 특성을 미리 알아 두는 것이 필요합니다.
 
1) 입력 모드 전환 키 : 실질적으로 문서에 글자를 입력하기 위해서는 명령 모드에서 입력 모드로 모드 전환이 이루어져야 합니다. 이 때 사용할 수 있는 키가 여러 가지가 있는데, 여기서는 그것들에 대해 설명하겠습니다. 단순 입력 작업이 끝나고, 커서 이동이나 편집 작업 등을 하려고 할 때는 Esc키를 눌러서 입력 모드에서 빠져 나와야 합니다.
 
i : 현재 커서 위치에 글자 삽입이 가능해 짐, i 키를 누르고 난 이후에 쓰는 글은 커서 위치에 쓰여지게 됨
I : 현재 줄 처음에 삽입
a : 현재 커서 다음 위치에 추가
A : 현재 줄 마지막에 추가
o : 아랫 줄에 추가
O : 윗 줄에 추가
s : 현재 커서 글자 지우고 입력 모드로 전환
r : 현재 커서 글자 지우고 한 글자 입력 받아 명령 모드로 돌아감
Esc : 입력 모드 또는 ex 명령 모드에서 vi 명령 모드로 전환, vi 명령 모드에서 Esc키를 누르면 삑 소리가 남
 
 
2) vi 명령 모드 키: Esc키를 눌러서 들어 올 수 있는 모드입니다. vi 에디터 시작할 때의 초기 모드이기도 합니다. 키 앞에 숫자를 입력하면 그 명령이 숫자 만큼 반복됩니다. 입력 모드에서 입력 작업 완료 후, 커서 이동이나 삭제, 복사, 붙여 넣기 등의 편집 작업 등을 할 때는 Esc키를 눌러 vi 명령 모드로 전환시킨 후에 해야 합니다.

 
[ 커서 이동 ]
h : 한 문자 왼쪽으로 커서 이동(도스용이나 윈도우즈용 vi 에디터의 경우는 대부분, 커서 이동에 방향키를 사용할 수 있으나, 방향키가 없는 터미널 키보드에서 vi 에디터를 사용하기 위해서는 여기서 설명하는 키들을 알아둘 필요가 있습니다)
j : 한 줄 아래쪽으로 커서 이동
k : 한 줄 위쪽으로 커서 이동
l : 한 문자 오른쪽으로 커서 이동
w : 다음 단어 첫 문자로 커서 이동
b : 이전 단어 첫 문자로 커서 이동
Ctrl+f : 한 페이지 아래로 커서 이동
Ctrl+b : 한 페이지 위로 커서 이동
G : 마지막 줄로 커서 이동, 숫자G로 눌렀을 때, 숫자에 해당되는 줄로 커서 이동
^ : 공백 문자가 아닌, 현재 줄의 첫 문자로 커서 이동
0 : 공백 문자를 포함한, 현재 줄 첫 문자로 커서 이동
$ : 현재 줄 마지막 문자로 커서 이동
 
[ 삭제 ] : 삭제된 것은 버퍼에 저장되므로 p나 P 명령으로 붙여 넣기가 가능함
x : 현재 커서 위치 문자 삭제
X : 현재 커서 위치 이전 문자 삭제
dw : 현재 커서 위치 단어 삭제, 숫자dw로 쓰면 숫자만큼의 단어가 삭제됨, 다른 삭제 명령도 마찬가지로 숫자 입력 방식이 적용됨
db : 현재 커서 위치 이전 단어 삭제
dd : 현재 커서 위치 줄 삭제, 숫자dd로 쓰면 숫자만큼의 줄이 삭제됨
d^ : 현재 줄에서 현재 커서 위치 이전 문자열 삭제
d$ : 현재 줄에서 현재 커서 위치 이후 문자열 삭제
D : d$와 같음
 
[ 복사, 붙여 넣기 ] : 여기서의 복사란, 버퍼로의 복사를 말함, 실제로 붙여 넣기를 하려면 p나 P키를 눌러야 함
yw : 현재 커서 이후 단어 복사, 숫자yw로 쓰면 숫자만큼의 단어가 복사됨, 다른 복사 명령에도 이와 같은 숫자 입력 방식이 적용됨
yb : 현재 커서 이전 단어 복사
yy : 현재 줄 복사, 숫자yy로 쓰면 숫자만큼의 줄이 복사됨
p : 복사된 항목을 현재 커서 위치 이후에 붙여 넣기, 삭제된 항목도 붙여 넣기 가능
P : 복사된 항목을 현재 커서 위치 이전에 붙여 넣기, 삭제된 항목도 붙여 넣기 가능
 
[ 검색 ]
/검색어 : 전진 검색
?검색어 : 후진 검색
n : 검색 반복
N : 반대 방향 검색 반복
 
[ 되돌리기(undo) ]
u : 되돌리기(undo). u키를 계속 치게되면, undo 버퍼가 빌 때까지 계속 되돌리기할 수 있음. 유용함
U : 라인 되돌리기. 한 줄에 대해서 모든 편집을 없던 것으로 하고 원상태로 되돌림
Ctrl+r : Redo(undo undo)
 
[ 기타 ]
J : 커서 위치 아랫줄을 현재 줄에 붙임. 커서 이동의 j와 혼동될 수가 있으므로, 대소문자 구별에 유의해야 함
. : 이전 실행 명령 반복. 같은 명령을 빠르게 반복하고자 할 때 유용함. 참고로, 문자열 입력 후, 명령 모드로 돌아와서 .을 입력하면 입력된 문자열이 커서 위치에 삽입됨
ZZ : 현재 문서 저장하고, 종료하기
 

3) ex 명령 모드 : ex 라인 에디터의 명령어를 사용할 수 있습니다. vi 명령 모드 상태에서, : 키를 눌러서 들어가고, Esc키를 눌러서 다시 vi 명령 모드로 나옵니다. 아래에 제가 자주 사용하는 명령들을 적어 봅니다. 각각의 명령을 입력한 후, 실행을 하기 위해서는 엔터키를 누르면 됩니다.
 
시작줄번호,끝줄번호d : 시작줄번호에서 끝줄번호까지의 줄을 지움, 붙여 넣기 가능, 문서의 처음 줄은 1, 현재 줄은 . , 마지막 줄은 $로 지정 가능, 줄번호 입력없이 d만 입력했을 경우에는, 현재 줄을 지움
 
시작줄번호,끝줄번호y : 시작줄번호에서 끝줄번호까지의 줄을 복사
 
시작줄번호,끝줄번호s/찾을문자열/바꿀문자열/g : 시작줄번호에서 끝줄번호까지 '찾을문자열'을 찾아 '바꿀문자열'로 바꿈, g를 사용하지 않으면, 한 줄에 '찾을문자열'이 여러 개 있더라도, 그 줄에 대해서는 한 번만 바꿔짐. 유닉스 정규 표현식을 써서 강력한 검색 및 치환이 가능함
 
se nu : 줄 번호 표시
 
n : 다음 파일 편집, vi 실행시 인자로 입력한 파일이 여러 개일 경우에 해당
 
r 파일이름 : '파일이름'의 파일을 읽어 와서 현재 커서 아랫줄에 삽입
 
sh : 쉘로 잠깐 빠져 나가기, 쉘에서 exit 치면, 다시 vi로 돌아옴. vi를 백그라운드로 돌려서(Ctrl+z), 쉘로 나가 다른 작업을 한 후, fg로 돌아오는 방법도 있음
! 명령 : 밖으로 빠져 나가지 않고 바로 '명령'을 실행시킴
 
w : 저장하기, w!로 쓰면, 강제로 저장하기
w 파일이름 : '파일이름'으로 저장하기
q : vi 종료하기, q!로 쓰면 강제로 종료하기
wq : 저장하고, 종료하기. wq!로 쓰면 강제로 저장하고 종료하기

'unix' 카테고리의 다른 글

scp 사용법  (0) 2009.02.11
Linux 파일 압축과 파일 묶기 - tar gzip gunzip bzip2 bunzip  (0) 2009.02.11
리눅스 계정관리  (0) 2008.12.29
crontab -r 했을 때 복구하는 방법  (1) 2008.09.17
find를 이용해 파일찾기  (0) 2008.09.08