VI
- Linux에서 기본적으로 제공하는 문서 편집기(CLI 환경에서 사용)
사용 환경
1) 명령 모드
- 기본 사용 환경 : 커서 이동, 복사/잘라내기, 삭제, 입력/실행 모드 전환
2) 입력 모드
- 문서의 내용을 변경하기 위한 환경, 내용 추가/수정/삭제, 명령 모드 전환
3) 실행 모드
- 그 외 대부분의 기능들을 사용하기 위한 환경, 명령 모드 전환 (ex모드)
※ 입력 모드와 실행 모드 간의 전환은 불가능
vi 에디터 실행
vi : 빈파일 열기
vi <파일명> : 해당 파일 열기
# 명령 모드 사용 방법
1. 커서 이동
1) 글자단위 커서 이동 | |
h | 한 글자 왼쪽으로 이동 |
j | 한 글자 아래로 이동 |
k | 한 글자 위로 이동 |
l | 한 글자 오른쪽으로 이동 |
2) 단어 단위 커서 이동 > 소문자로 눌러주면 특수문자를 별개의 단어로 인식 대문자로 눌러주면 무조건 공백/엔터를 기준으로 단어 인식 |
|
w | 다음 단어의 첫 글자로 이동 |
b | 이전 단어의 첫 글자로 이동 |
e | 다음 단어의 마지막 글자로 이동 |
3) 줄 내부 커서 이동 | |
0 | 커서가 있는 줄 첫 글자로 이동 |
$ | 커서가 있는 줄 마지막 글자로 이동 |
4) 화면 내부 커서 이동 | |
L | 현재 화면의 마지막 줄로 이동 |
M | 현재 화면의 가운데 줄로 이동 |
H | 현재 화면의 첫 줄로 이동 |
5) 문서 내부 커서 이동 ( ★★★★★ ) | |
gg = [[ | 문서의 첫 줄로 이동 |
G = ]] | 문서의 마지막 줄로 이동 |
:숫자 | 숫자번째 줄로 이동 |
2. 입력 모드 전환
i | 커서 왼쪽으로 내용 입력 |
I | 커서가 있는 줄 왼쪽으로 내용 입력 |
a | 커서 오른쪽으로 내용 입력 |
A | 커서가 있는 줄 오른쪽으로 내용 입력 |
o | 커서 아래 빈 줄 삽입 후 내용 입력 |
O | 커서 위에 빈 줄 삽입 후 내용 입력 |
s | 커서가 있던 글자를 지우고 내용 입력 |
S | 커서가 있던 줄을 지우고 내용 입력 |
3. 실행 취소. 다시 실행 ( ★★★★★ )
u | 실행 취소 (되돌리기) |
ctrl + r | 다시 실행 |
4. 삭제
x | 커서 오른쪽 글자 삭제 ( =delete ) > 커서 오른쪽에 지울 글자가 더 없으면 커서 왼쪽 글자 삭제 ( = backspace ) |
X | 커서 왼쪽 글자 삭제 ( =backspace ) > 커서 왼쪽에 지울 글자가 더 없으면 그대로 기능 종료 |
5. 복사/잘라내기/붙여 넣기 ( ★★★★★ )
yy | 커서가 있는 줄 복사 |
숫자 + yy | 커서가 있는 줄부터 숫자 만큼의 줄 복사 |
dd | 커서가 있는 줄 잘라내기 |
숫자 + dd | 커서가 있는 줄부터 숫자만큼의 줄 잘라내기 |
p | 커서 아래로 붙여넣기 |
P | 커서 위로 붙여넣기 |
# 실행 모드 사용 방법
1. 줄 번호 출력/숨기기
:set nu | 줄 번호 출력 |
:set nonu | 줄 번호 숨기기 |
2. 검색
/Pattern | 위에서 아래로 Pattern검색 |
?Pattern | 아래에서 위로 Pattern검색 |
n | 검색 방향으로 다음 찾기 |
N | 검색 방향 반대로 다음 찾기 |
3. 찾아 바꾸기 (치환)
:[범위]s/찾을내용/바꿀내용/[옵션] | |
범위 | |
생략 | 커서가 있는 줄의 내용을 찾아서 변경 |
n1 | n번째 줄에 있는 내용을 찾아서 변경 |
n1,n2 | n1번째 줄부터 n2번째 줄까지의 내용을 찾아서 변경 |
% | 문서 전체에 있는 내용을 찾아서 변경 |
옵션 | |
g | 한 줄에 찾는 내용이 여러 개면 전체를 다 변경 |
4. 현재 사용 중인 파일 확인
:f | 현재 파일명과 커서 위치 확인 |
5. 리눅스 명령어 사용
:! <명령어> | vi를 잠시 멈추고 리눅스 명령어 동작 |
6. 문서에 내용 삽입
:.! <명령어> | 커서가 있던 줄의 내용을 지우고 명령어 동작 결과 입력 ( 화면에 결과가 출력되는 명령어를 사용 ) |
:r! <명령어> | 커서가 있던 줄 아래로 명령어 동작 결과 입력 ( 화면에 결과가 출력되는 명령어를 사용 ) |
:r <파일명> | 커서가 있던 줄 아래로 다른 파일의 내용 삽입 |
※ :r, :r!는 :과 r 사이에 숫자를 넣어서 특정 줄 아래로 삽입 가능
7. 저장/종료/불러오기
> !를 붙여주면 강제로 진행(ex. :q! = 강제 종료)
:w | 저장 |
:w <파일명> | 다른 이름으로 저장 |
:wq | 저장하고 종료 |
:wq <파일명> | 다른 이름으로 저장하고 종료 |
:q | 종료 |
:e <파일명> | 기존 문서를 종료하고 다른 파일 불러오기 |
:enew | 기존 문서를 종료하고 새 파일 열기 |
8. vi 화면 분할
ctrl + w + n | vi 화면 분할 |
ctrl + w + w | 분할 화면간 커서 이동 |