1. vi 동작 모드
- vi의 모드는 입력 모드, 명령 모드외에 마지막행 모드가 있다.
- 입력 모드 : 실제로 내용을 입력 할 수 있는 모드
- 명령 모드, 마지막 행 모드 : 글자의 행의 삭제,검색,저장 등의 기능 수행하는 모드
2. vi 시작과 종료
2-1. 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) | 현재 행과 아래 행을 연결하여 한 행으로 만든다. |
.(마침표) | 바로 직전에 했던 명령을 반복 |
~(틸드) | 커서 위치의 글자를 대문자나 소문자로 바꾼다. |
'Linux' 카테고리의 다른 글
[Linux] 8. 리눅스 셸의 기능과 기본 사용법 (0) | 2023.02.09 |
---|---|
[Linux] 7. 리눅스 vi 환경 설정 (0) | 2023.02.08 |
[Linux] 5. 리눅스의 문서 편집기 (0) | 2023.02.08 |
[Linux] 4. 리눅스 파일 관련 명령 (0) | 2023.02.08 |
[Linux] 3. 리눅스 디렉터리 관련 명령 (0) | 2023.02.08 |
댓글