(사용하지 않으면 자주 까먹는) vi 편집기 사용방법 정리

1. vi 편집기 개념
- 유닉스/리눅스 시스템의 표준 편집기
- X윈도우 환경뿐 아니라 콘솔 환경에서도 같은 방법으로 제공
- 리눅스는 기능이 향상된 vim이라는 클론이 사용됨
2. vi 사용법 개요도
▶ vi로 작업하면 모든 데이터는 편집 버퍼(editing buffer)에 유지됨
- 저장하지 않고 종료 했을 경우 파일 복구(파일명. swap 파일 생성됨)
-> R: 해당화면에서 복구, E: 그냥 고치기)
3. vi 편집기 모드
1) 명령 모드(command mode)
- 입력하는 모든 것이 명령어로 해석됨
- 저장, 검색 등의 명령을 수행
▶ 명령 모드 -> 입력 모드
i | 현재 커서의 위치부터 입력 | I | 현재 커서 행의 맨 앞에서부터 입력 |
a | 현재 커서의 위치 다음 칸부터 입력 | A | 현재 커서 행의 맨 마지막부터 입력 |
▶ 명령 모드에서 커서를 이동
gg | 제일 첫 행으로 이동 | G | 제일 끝 행으로 이동 |
숫자 G | 해당 숫자의 행으로 이동 | :숫자 (Enter) | 해당 숫자의 행으로 이동 |
명령 | 내용 |
h, j, k, l | 왼쪽, 위로, 아래로, 오른쪽 |
space | 커서 한칸 오른쪽 이동 |
0 | 커서를 현재줄의 맨 앞으로 이동 |
$ | 커서를 현재줄의 끝으로 이동(마지막 글자의 끝) |
^ | 커서를 현재줄의 첫 글자 이동(맨 외쪽의 글자) |
w | 커서를 다음단어의 첫 글자 이동 |
b | 커서를 이전단어의 첫 글자 이동 |
) | 다음 문장의 처음으로 이동 |
( | 이전 문장의 처음으로 이동 |
ctrl + f | 한 화면 아래로 이동 |
ctrl + b | 한 화면 위로 이동 |
ctrl + d | 반 화면 아래로 이동 |
ctrl + u | 반 화면 위로 이동 |
▶명령 모드에서 삭제, 복사, 붙여 넣기
x | 현재 커서가 위치한 글자 삭제 (Del) | X | 현재 커서가 위치한 앞 글자 삭제 (Backspace) |
dd | 현재 커서의 행 삭제 | 숫자 dd | 현재 커서부터 숫자만큼의 행 삭제 |
yy | 현재 커서가 있는 행을 복사 | 숫자 yy | 현재 커서부터 숫자만큼의 행을 복사 |
p | 복사행 내용을 현재 행 이후에 붙여넣기 | P | 복사한 내용을 현재 행 이전에 붙여 넣기 |
▶ 명령 모드에서 문자열 찾기
/문자열(Enter) | 해당 문자열을 찾음(현재 커서 이후로) | n | 찾은 문자 중에서 다음 문자로 이동함 |
▶ 명령 모드에서 내용 수정하기
- r을 제외하고는 명령 수행 후 입력 모드로 변경됨
명령 | 내용 |
r | 단지 한 글자만 변경(입력모드로 바뀌지 않음 |
R | from 줄에서 to 줄까지 버퍼에 복사함 |
s | 현재 커서위치를 삭제하고 삽입 상태로 변경 |
C | 커서의 위치로 부터 줄 끝까지 삭제하고 삽입 상태 |
cc | 전체 줄을 삽입에 의해 변경 |
cw | 현재 단어를 삭제하고 삽입 상태로 변경 |
▶ 명령 모드에서 버퍼 내용 집어넣기
- 마지막 버퍼 내용을 집어넣는다. (Windows copy & paste와 비슷)
명령 | 내용 |
p | n번째 줄로 이동 |
P | from 줄에서 to 줄까지 버퍼에 복사함 |
▶ 명령 모드에서 Undo & Redo
명령 | 내용 |
u | 방금 전에 수행했던 내용을 취소 |
U | 현재 줄에서 수행했던 모든 내용을 취소 |
. | 방금 전에 수행했던 내용을 반복해서 수행 |
2) 입력 모드(input mode)
- 입력하는 모든 것이 편집 버퍼에 입력됨, 즉, 자신이 입력하는 내용이 화면에 보이고, 그 입력 내용 메모리에 반영됨
(디스크에 직접 반영되는 것이 아니라 편집 버퍼인 메모리에 반영됨 )
3) 실행 모드(executable mode)
- 파일 저장, 읽기, 외부 명령 실행 , 종료 등
▶ 실행 모드에서 줄 복사 및 이동
- 종료하기 위해서는 명령을 입력할 수 있는 입력 모드에 있어야 함
명령 | 내용 |
:n | n번째 줄로 이동 |
:from, to, y | from 줄에서 to 줄까지 버퍼에 복사함 |
:nY | 현재 위치에서 n줄을 버퍼에 복사함 |
▶ 패턴 검색
- 파일의 내용 중 특정 패턴을 검색
명령 | 내용 |
/string | 커서 이후에 대해 검색 수행 |
?string | 커서 이전에 대해 검색 수행 |
▶ 줄 번호 붙이기 및 이동
명령 | 내용 |
se nu | 줄 번호 붙이기 |
se nonu | 줄 번호 없애기 |
:n | 행 번호를 알 경우 해당 행으로 이동 |
▶ 패턴에 의한 치환
명령 | 내용 |
:s/AAA/BBB | 현재 행에서 AAA를 BBB로 교체(첫번째 단어) |
:s/AAA/BBB/g | 현재 행에서 AAA를 BBB로 교체(모든 단어) |
:g/AAA/s//BBB | 각 행에서 처음 등장하는 AAA를 BBB로 교체 |
:g/AAA/s//BBB/g | AA가 등장하는 곳 전부를 BBB로 교체 |
:g/AAA/s//BBB/gp | 전부를 BBB로 교체하고 변경된 행을 출력 |
▶ 데이터 삭제하기
- 편집 버퍼에 있는 데이터를 삭제하는 명령
명령 | 내용 |
x | 커서가 있는 문자 지우기 |
D | 커서 부터 줄 끝까지 지우기 |
dd | 현재 줄의 전체를 지우기 |
:from, to, d | 주어진 범위의 줄을 모두 지우기 |
▶ vi 종료하기
- 종료하기 위해서는 명령을 입력할 수 있는 실행 모드(;)에 있어야 함
명령 | 내용 |
:q | 아무런 작업을 하지 않은 경우 종료 |
:q! | 작업내용을 저장하기 않고 종료 |
:wq | 작업내용을 저장하고 종료 |
'IT > Server' 카테고리의 다른 글
[Linux] Tcpdump 설정 및 사용법 (0) | 2022.08.04 |
---|---|
RAID 개념 및 종류 설명 (0) | 2022.08.02 |
[Linux] iptables 개념, 설정 및 옵션 정리 (3) | 2022.07.25 |
댓글