리눅스나 유닉스를 다루는데 VI만 알아도 반은 안것이다라는 말이 있다.
그러나 명령어를 보고 공부해도 숙달되지 않으면 다 소용없는 것이 VI 에디터이다.
우선 명령어를 인쇄해 놓고 모니터옆에 붙여놓은 다음 명령어에 따라 편집해 보는 연습을 해보는게 제일좋다.
그러나 명령어를 보고 공부해도 숙달되지 않으면 다 소용없는 것이 VI 에디터이다.
우선 명령어를 인쇄해 놓고 모니터옆에 붙여놓은 다음 명령어에 따라 편집해 보는 연습을 해보는게 제일좋다.
어느 정도 숙달되면 일반 윈도우의 에디터가 불편하여 사용하기가 어려워지는 중독성 있는게 VI 에디터이다.
■ 명령어 정리
vi 시작 명령어 | |
vi 파일명 | 파일 열기, 작성 |
vi +18 파일명 | 18행으로 파일 열기 |
vi +/"문자열" fn | "문자열"의 처음발생 단어부터 열기 |
vi -r 파일명 | 손상된 파일 회복 |
view 파일명 | 읽기 전용으로 파일 열기 |
vi 커서 이동 명령어 | |
h(←) | 좌측으로 커서 이동 |
l(→) | 우측으로 커서 이동 |
j(↓) | 아래로 커서 이동 |
k(↑) | 위로 커서 이동 |
w | 오른쪽 한 단어의 끝 부분으로 커서 이동 |
e | 오른쪽 한 단어의 앞 부분으로 커서 이동 |
b | 왼쪽 한 단어의 앞 부분으로 커서 이동 |
Enter | 한 행 아래로 커서 이동 |
Back space | 한 문자 왼쪽으로 커서 이동 |
Space Bar | 한 문자 오른쪽으로 커서 이동 |
^ | 행의 맨 왼쪽으로 커서 이동 |
$ | 행의 맨 오른쪽으로 커서 이동 |
H | 화면의 맨 위로 이동 |
M | 화면의 중간으로 이동 |
L | 화면의 맨 아래로 이동 |
숫자G | '숫자'만큼 지정한 줄로 커서 이동 |
Ctrl + f | 한 화면 위로 이동 |
Ctrl + b | 한 화면 아래로 이동 |
Ctrl + d | 반 화면 위로 이동 |
Ctrl + u | 반 화면 아래로 이동 |
Ctrl + e | 한 줄씩 위로 이동 |
Ctrl + y | 한 줄씩 아래로 이동 |
문자,행 삽입 명령어 | |
a (종료:ESC) | 커서 오른쪽에 문자 삽입 |
A (종료:ESC) | 커서 오른쪽, 행의 끝에 문자 삽입 |
i (종료:ESC) | 커서 왼쪽에 문자 삽입 |
I (종료:ESC) | 커서 왼쪽, 행의 처음에 문자 삽입 |
o (종료:ESC) | 커서 아래에 행 삽입 |
O (종료:ESC) | 커서 위에 행 삽입 |
텍스트 변경 명령어 | |
cw (종료:ESC) | 단어 변경 |
cc (종료:ESC) | 행 변경 |
C (종료:ESC) | 커서 오른쪽의 행 변경 |
s (종료:ESC) | 커서가 위치한 문자열 대체 |
S (종료:ESC) | 커서가 위치한 라인의 문자열 대체 |
r | 커서 위치 문자를 다른 문자로 대체 |
r-Enter | 행 분리 |
J | 현재 행과 아래 행 결합 |
xp | 커서 위치 문자와 오른쪽 문자 교환 |
~ | 문자형(대,소문자) 변경 |
u | 이전 명령 취소 |
U | 행 변경 사항 취소 |
:u | 이전의 최종 행 취소 |
. | 이전 최종 명령 반복 |
텍스트 삭제 명령어 | |
x | 커서가 있는 문자 삭제 |
5x | 커서가 있는 위치부터 5개의 문자를 삭제 |
dw | 현재 커서가 있는 한단어 삭제 |
dd | 커서가 있는 라인 삭제 |
5dd | 커서가 있는 라인부터 5개의 라인 삭제 |
db | 커서의 위치에서 꺼꾸로 한단어 삭제 |
D | 커서 오른쪽 행 삭제 |
:5,10d | 5-10번째 행 삭제 |
복사 및 이동 명령어 | |
yy | 행 yank 또는 복사 |
Y | 행 yank 또는 복사 |
P | yank되거나 삭제된 행 현재 행 위에 삽입 |
p | yank되거나 삭제된 행 현재 행 아래에 삽입 |
:1,2 co 3 | 1-2행을 3행 다음으로 복사 |
:4,5 m 6 | 4-5행을 6행 위로 이동 |
행 번호 설정 명령어 | |
:set nu | 행 번호 표시 |
:set nonu | 행 번호 숨기기 |
행 찾기 명령어 | |
G | 파일의 마지막 행으로 가기 |
21G | 파일의 21번째 행으로 가기 |
Ctrl + G | 현재의 filename과 line수를 알려줌 |
탐색 및 대체 명령어 | |
/검색할 문자열/ | 오른쪽 아래 방향으로 문자열 검색 |
?검색할 문자열? | 왼쪽 위 방향으로 문자열 검색 |
n | 문자열의 다음으로 계속 검색 |
N | 문자열의 이전으로 계속 검색 |
:g/search-string/s//replace-string/gc | 각 발생 탐색 후 확인하고 대체 |
:s/str/rep/ | 현재 행의 str을 rep로 대체 |
:1,.s/str/rep/ | 1부터 현재 행의 str을 rep로 대체 |
:%s/str/rep/g | 파일 전체 str을 rep로 전부 대체 |
:.$/aaa/bbb/ | 커서의 위치로부터 화일의 끝까지 있는 모든 aaa를 bbb로 대체 |
화면정리 명령어 | |
Ctrl + l | 불필요한 화면정리 후 다시 표시 |
파일 명령어 | |
:r filename | 커서 다음에 파일 삽입 |
:34 r filename | 파일을 34번째 행 다음에 삽입 |
보관 및 종료 명령어 | |
:w | 변경사항 보관 |
:w filename | 버퍼를 파일로 보관 |
:wq | 변경사항 보관 후 vi 종료 |
ZZ | 변경사항 보관 후 vi 종료 |
:q! | 변경사항 보관하지 않고 종료 |
q | 수정한 파일을 저장하지 않고 vi 종료 |
e! | 수정한 것을 무시하고 다시 편집상태로 |
■ 사용예
명령어 모드로 들어갈때는 :
입력모드로 갈때는 ESC 키
습관적으로 입력모드에서는 ESC키를 누른후 i를 입력하여 문자삽입모드로 들어간다.
활용예
1. 문자치환 (abc가 들어있는 문자를 cba 로 바꿔 버린다.)
- 문서 전체를 적용할 때
:%s/abc/cba/g
- 커서의 위치부터 끝까지 적용할 때
:.,$/abc/cba/g
- 전체 문서에서 /etc/ 를 /etc/local/ 로 치환
:s/\/etc\//\/etc\/local\//g
2. 삭제
- abc로 시작하는 모든 단어를 삭제
:%s/abc[a-z]*//g
- abc가 들어가 모든 문자 삭제
:g/abc/d
- abc0, ... abc9까지의 모든 단어 삭제
:g/abc[0-9]/d
- 빈줄모두 삭제
:g/^$/d
3. 복사와 붙여넣기
해당 줄에 yy를 치고 삽입하고자 하는 위치에서 p를 친다.
3줄을 복사한다면 3yy를 치고 p를 입력
4. 저장 종료
저장은 명령어 모드에서 w
:w
종료는 명령어 모드에서 q
:q
저장후 종료는 명령어 모드에서
:wq
'리눅스정보' 카테고리의 다른 글
호스팅 이용을 위한 MySQL 기본 사용법 (0) | 2008.03.18 |
---|---|
CentOS 5 계열 보안 버그로 인한 커널 업데이트 (0) | 2008.02.14 |
VI 에디터 명령어 및 사용법 정리 (1) | 2008.01.16 |
CentOS 소개 및 페도라와의 비교 (0) | 2007.09.27 |
가비아 리눅스 기술지원 서비스 가격테이블 (0) | 2007.09.17 |