본문 바로가기
IT/Server

[Linux] vi 편집기 설정 및 사용방법

by 핫독스 2022. 8. 4.
반응형

(사용하지 않으면 자주 까먹는) 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

댓글