vi editor
1. vi editor란?
vi는 대부분의 유닉스 및 리눅스 환경의 기본 에디터로 명령 모드(command mode), 입력 모드(input mode), 실행 모드(execution mode) 3가지 모드로 구분되어 사용된다.
명령 모드(command mode)
- 한 문자 또는 두 문자로 구성된 vi 전용 명령어를 사용하는 모드로서 "커서 이동 / 문자 삭제 / 문자열 교체 / 문자열 검색" 등을 할 수 있는 모드를 말한다. vi를 처음 실행하면 시작하는 모드, vi에서는 대문자와 소문자를 구분해서 사용해야 한다.
입력모드(input mode)
- vi 편집화면에서 문자를 입력할 수 있는 상태를 의미하며 명령 모드에서 입력 모드로 전환하려면 i, a, o, I, A, O, R 등으로 명령을 내리면 입력 모드로 전환된다. 입력 모드로 전환되면 화면 화단에 " -- INSERT -- "라는 문구가 표시된다. 이 상태에서 다시 <ESC>를 누르게 되면 다시 명령 모드로 전환된다.
실행 모드(execution mode)
- vi의 특별한 명령어를 실행하는 실행 모드를 의미하며 명령 모드에서 콜론(:)을 누르면 vi 화면 하단 좌측에 ":"가 나타나며 이 상태에서 vi의 특별한 명령어를 사용할 수 있다.
2. vi 기초 명령어
1) 이동 명령
h |
왼쪽으로 한 글자 이동 |
l |
오른쪽으로 한 글자 이동 |
k |
위쪽으로 한 줄 이동 |
j |
아래쪽으로 한 줄 이동 |
단어 단위로 이동
W |
다음 단어의 처음으로 이동 |
B |
현재 단어의 처음으로 이동 |
E |
다음 단어의 끝으로 이동 |
행, 문장 및 단락의 처음과 끝으로 이동
0 또는 ^ |
현재 행의 맨 앞으로 이동 |
$ |
현재 행의 맨 끝으로 이동 |
+ |
다음 행의 처음으로 이동 |
- |
이전 행의 처음으로 이동 |
( |
문장의 시작으로 이동 |
) |
문장의 끝으로 이동 |
{ |
단락의 시작으로 이동 |
} |
단락의 끝으로 이동 |
화면 내에서 행 단위로 이동
H |
현재 화면의 맨 위로 이동 |
M |
현재 화면의 가운데 행으로 이동 |
L |
현재 화면의 맨 아래로 이동 |
한 화면씩 스크롤
Ctrl + F |
한 화면 다음으로 이동 |
n + Ctrl +F |
n 화면 다음으로 이동 |
Ctrl + B |
한 화면 이전으로 이동 |
n + Ctrl + B |
n화면 이전으로 이동 |
Ctrl + D |
반 화면 다음으로 이동 |
Ctrl + U |
반 화면 이전으로 이동 |
n + Ctrl +D |
n 행 다음으로 이동 |
n + Ctrl + U |
n 행 이전으로 이동 |
2) 입력하기
i |
현재 위치부터 입력 |
I |
현재 행 맨 처음부터 입력 |
a |
현재 위치 다음부터 입력 |
A |
현재 행의 끝부터 입력 |
o |
현재 행 다음 행에 입력 |
O |
현재 행과 앞 행 사이에 입력 |
3) 저장 및 종료
:w |
불러온 파일명으로 데이터 저장 |
:w [파일명] |
지정 파일명으로 데이터를 저장 |
:w >> [파일명] |
지정 파일명으로 데이터를 추가하여 저장 |
:w! |
강제 저장 |
:q |
종료 |
:q! |
저장 없이 강제 종료 |
:wq |
파일 저장 후 종료. 파일명 지정가능. |
:wq! |
강제로 파일 저장 후 종료. 파일명 지정가능. |
ZZ |
파일을 저장하고 vi종료 |
:x |
파일에 변경이 있었다면 파일을 저장하고 vi를 종료 |
4) 삭제, 수정 및 복사
x |
현재 위치에서 한 글자 삭제 |
X |
현재 위치에서 앞 글자 삭제 |
dd |
현재 행 지우기 |
D |
현재 위치에서 행의 끝까지 지우기 |
dw |
단어 삭제 |
cw |
단어 삭제 후 입력 |
d$ |
커서가 있는 곳부터 행의 끝까지 지우기 |
dG |
커서가 있는 곳부터 파일 끝까지 지우기 |
P |
마지막으로 지워진 내용은 커서의 뒤/아래에 삽입 |
p |
마지막으로 지워진 내용을 커서의 앞/뒤에 삽입 |
xp |
두 문자를 바꿈 |
deep |
두 단어를 바꿈 |
ddp |
두 줄을 바꿈 |
YY |
현재 행을 복사하기 |
u |
바로 전에 수행한 명령 취소하기 |
U |
바로 전에 수행한 행의 모든 명령 취소하기 |
r |
다른 파일의 내용을 읽어 들여 붙이기 |
5) 패턴 찾기
/문자열 |
아래 방향으로 문자열 검색 |
/ |
이전 패턴에 대해 아래 방향으로 검색을 반복 |
?문자열 |
위 방향으로 문자열 검색 |
? |
이전 패턴에 대해 위 방향으로 검색을 반복 |
n |
/ 또는? 명령에 대해 같은 방향으로 반복 검색 |
N |
/ 또는 ? 명령에 대해 반대 방향으로 반복 검색 |
6) 기타 명령
화면상태 제어
^L |
화면을 다시 디스플레이 |
:set nu :set number |
편집 중인 문서의 행 번호를 보여줌 |
:set nonu :set nonumber |
편집 중인 문서의 행 번호를 보여주지 않음 |
약자의 사용
:ab short long |
short를 long에 대한 약어로 변경 |
:ab |
약어 short를 표시 현재 약어 목록을 표시 |
:una short |
편집 중인 문서의 줄 번호를 보여주지 않음 |
화면 줄 길이 조정
r <Return> |
문자를 뉴 라인으로 변경 |
J |
줄의 결합 |
:set wm=n |
오른쪽으로 n 문자 위치에서 자동적으로 줄 나눔 |
문자열 치환
:g/search-string/s//replace-string/g |
앞부분의 문자열을 찾아서 뒷부분의 문자열로 대체 |
:s/str/rep/ |
현재 행의 str을 rep로 대체 |
:1,.s/str/rep/ |
1부터 현재 행의 str을 rep로 대체 |
:%s/str/rep/g |
파일 전체 str을 rep로 전부 대체 |
:.$/aaa/bbb/ |
커서의 위치로부터 파일의 끝까지 있는 모든 aaa를 bbb로 대체 |
3. vi editor 단축키
vi 단축키 모음 이미지 출처: KLDP
'Linux' 카테고리의 다른 글
마운트 시 오류 'mount error(112): Host is down' (0) | 2019.01.25 |
---|---|
error db5 error(11) from dbenv- open resource temporarily unavailable (0) | 2019.01.22 |
ffmpeg 실행시 오류 (0) | 2019.01.22 |
Single Mode 부팅진입 및 CLI, GUI, 복구 모드로 변경 (0) | 2017.11.25 |
crontab 사용방법 (0) | 2017.08.02 |