본문 바로가기

리눅스정보

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