본문 바로가기
Linux

[Linux] 6. 리눅스 문서 편집기(vi)

by 상도동개발자 2023. 2. 8.
SMALL

1. vi 동작 모드

-  vi의 모드는 입력 모드, 명령 모드외에 마지막행 모드가 있다.

- 입력 모드 : 실제로 내용을 입력 할 수 있는 모드

- 명령 모드, 마지막 행 모드 : 글자의 행의 삭제,검색,저장 등의 기능 수행하는 모드

vi 동작 모드

2. vi 시작과 종료

2-1. vi 명령어

지정한 파일을 편집한다. 파일명을 지정하지 않으면 빈 파일이 열리고, 이 빈 파일의 파일명은 별도로 정할 수 있다.

- 형식 : vi [파일]

- 사용 예

vi 명령어 사용 예시
vi 명령어 사용 결과

- vi의 저장과 종료 명령키

모드 명령키 기능
마지막 행 모드 :q vi에서 작업한 것이 없을 때 그냥 종료
:q! 작업한 내용을 저장하지 않고 종료
:w 파일명 작업한 내용을 저장만 한다. 파일명을 지정하면 다른 파일로 저장
:wq, :wq! 작업한 내용을 저장하고 vi를 종료
명령 모드 ZZ(Shift + zz) 작업한 내용을 저장하고 vi를 종료

 

3. vi 모드 전환

vi는 처음에 명령 모드로 시작하므로 내용을 입력하려면 입력 모드로 전환 해야한다.

 

- 입력모드 전환 명령키

명령키 기능
i 현재 커서 자리에 입력
a 현재 커서 다음 자리에 입력
o 커서가 위치한 행의 다음 행에 입력
I(대문자 i) 커서가 위치한 행의 첫 칼럼으로 이동하여 입력
A 커서가 위치한 행의 마지막 컬럼으로 이동하여 입력
O 커서가 위치한 행의 이전 행에 입력

 

4. 커서와 화면 이동

4-1. 커서 이동

화면 편집기에서는 일반적으로 커서를 원하는 위치로 움직이면서 작업한다. vi에서는 키보드만을 이용하여 커서를 이동 할 수 있다.

 

- 커서 이동 명령키

명령키 기능
k / j 또는 ↑ / ↓ 커서를 한 행 위 / 아래로 이동
l / h 또는 → / ← 커서를 한 글자 오른쪽 / 왼쪽으로 이동
^ 또는 0 / $ 또는 Home / End 커서를 현재 행의 처음 / 마지막으로 이동
- / + 또는 Enter 커서를 앞 / 다음 행의 처음으로 이동
H / M / L 커서를 화면 맨 위 / 중간 / 맨 아래 행으로 이동
w / e 커서를 다음 단어의 처음 / 마지막 글자로 이동
b 커서를 앞 단어의 첫 글자로 이동

4-2. 화면 이동

vi로 한번에 볼 수 있는 내용은 터미널 화면 크기에 따라 달라진다. 파일크기가 터미널의 화면 크기보다 클 경우 화면을 이동해야한다.

 

- 화면 이동 명령키

기존 명령키 기능 추가 명령키
Ctrl + u 반 화면 위로 이동  
Ctrl + d 반 화면 아래로 이동  
Ctrl + b 한 화면 위로 이동 Page Up
Ctrl + f 한 화면 아래로 이동 Page Down
Ctrl + y 화면을 한 행만 위로 이동  
Ctrl + e 화면을 한 행만 아래로 이동  

4-3. 특정행으로 바로 이동

원하는 행으로 커서를 이동하는 방법이다.

 

- 특정 행으로 바로 이동하는 명령키

명령키 기능
G(Shift + g) 파일의 마지막 행으로 커서가 이동
행 번호G(Shift + g) 지정한 행 번호로 커서가 이동
:행 번호 지정한 행 번호로 커서가 이동(마지막 행 모드)
:$ 파일의 마지막 행으로 커서가 이동(마지막 행 모드)

 

5. 내용 수정

- 내용 수정 명령키

명령키 기능
r 커서가 위치한 글자를 다른 글자로 수정
cw, #cw 커서 위치부터 현재 단어의 끝까지 수정한다. #에는 수정할 단어의 수를 지정한다. 예를 들어 3cw는 커서 위치부터 세 단어를 수정한다.
s, #s 커서 위치부터 Esc를 입력 할 떄까지 수정한다. #에는 수정할 단어의 수를 지정한다. 예를 들어 5s는 커서 위치부터 세 단어를 수정한다.
cc 커서가 위치한 행의 내용을 모두 수정
C 커서 위치부터 행의 끝까지 수정

 

6. 내용 삭제

 

- 내용 삭제 명령키

명령키 기능
x, #x 커서 위치의 글자를 삭제한다. #에는 삭제 할 글자 수를 지정한다.
dw, #dw 커서 위치의 단어를 삭제한다. #에는 삭제 할 단어 수를 지정한다.
dd, #dd 커서 위치의 행을 삭제한다. #에는 삭제 할 행의 수를 지정한다.
D(Shift + d) 커서 위치부터 행의 끝까지 삭제한다.

7. 명령 취소

- 이전 명령 취소 명령키

명령키 기능
u 명령을 취소한다.
U 해당 행에서 한 모든 명령을 취소한다.
:e! 마지막으로 저장한 내용 이후의 것을 버리고 새로 작업한다.

8. 복사 및 잘라붙이기

- 복사하기, 잘라내기, 붙이기 명령키

명령키 기능
yy,#yy 커서가 위치한 행을 복사한다. #에는 복사 할 행의 수를 지정
p 커서가 위치한 행의 아래쪽에 붙인다.
P 커서가 위치한 행의 위쪽에 붙인다.
dd, #dd 커서가 위치한 행의 잘라둔다. #에는 잘라 둘 행의 수를 지정

- 마지막 행모드에서 범위 지정 명령키

명령키 기능
1,$ 또는 % 1행부터 마지막 행까지 지정
1,. 1행부터 커서가 있는 행까지 지정
.,$ 커서가 있는 행부터 마지막 행까지 지정
,-3 현재 행과 이전 세행까지(총 네 행) 지정
10,20 10행부터 20행까지 지정

- 마지막 행모드에서 복사하기, 잘라내기, 붙이기 명령키

명령키 기능
:#y #로 지정한 행을 복사한다. 예를 들면 3y는 세 번째 행을 복사
:<범위>y 범위로 지정한 행의 복사한다. 예를 들면 2,4y는 2~4행을 복사
:#d #로 지정한 행을 잘라낸다(삭제). 예를 들면 3d는 세 번째 행을 잘라낸다.
:<범위>d 범위로 지정한 행을 잘라낸다(삭제). 예를 들면 1,4d는 1~4행을 잘라낸다.
:pu 현재 행 다음에 버퍼의 내용을 붙인다.
:#pu #로 지정한 행 다음에 버퍼의 내용을 붙인다. 예를 들면 4pu와 같이 지정

9. 검색 및 바꾸기

- 검색 명령키

명령키 기능
/문자열 문자열을 아래 방향으로 검색
?문자열 문자열을 위 방향으로 검색
n 원래 찾던 방향으로 다음 문자열을 검색
N 역방향으로 다음 문자열을 검색

 

- 바꾸기 명령키

명령키 기능
:s/문자열1/문자열2/ 커서가 위치한 행에서 첫 번째로 나오는 문자열1을 문자열2로 바꾼다.
:%s/문자열1/문자열2/g 파일 전체에서 모든 문자열1을 문자열2로 바꾼다.
:<범위>s/문자열1/문자열2/ 범위 내 모든 각 행에서 첫 번째로 나오는 문자열1을 찾아 문자열2로 바꾼다.
:<범위>s/문자열1/문자열2/g 범위 내 모든 행에서 문자열 1을 문자열2로 바꾼다.
:<범위>s/문자열1/문자열2/gc 범위 내 모든 행에서 문자열1을 문자열2로 바꿀 때 수정할지 여부를 묻는다.

 

10. 기타 유용한 명령키

- 파일 관련 명령키 - 파일 읽어오기, 여러 파일 편집하기

명령키 기능
:r 파일 지정한 파일을 읽어들여 현재 커서 위치에 삽입한다.
:e 파일 지정한 파일로 전환한다(기존 파일을 :w로 저장한 뒤에 실행해야 한다.)
:n vi 시작 시 여러 파일을 지정했을 경우 다음 파일로 작업을 이동한다.

- 셀 명령 실행 명령키

명령키 기능
:! 셀 명령 vi 작업을 잠시 중단하고 셀 명령을 실행한다.(vi로 돌아오려면 Enter 키 입력)
:sh vi를 잠시 빠져나가서 셀 명령을 실행한다(vi로 돌아오려면 exit 명령을 입력)

- 기타 명령키

명령키 기능
Ctrl + l (소문자 L) 현재 화면을 다시 출력
Ctrl + g 현재 커서 위치의 행 번호를 마지막 행에 출력
Shift + j (대문자 J) 현재 행과 아래 행을 연결하여 한 행으로 만든다.
.(마침표) 바로 직전에 했던 명령을 반복
~(틸드) 커서 위치의 글자를 대문자나 소문자로 바꾼다.

 

728x90
반응형
LIST

댓글