한눈에 보는 vi 사용법

Seobtudy·2021년 1월 24일
0

Linux

목록 보기
1/1
post-thumbnail

vi 편집기 실행

# vi 파일명 입력시, vi 파일 생성과 동시에 편집모드 실행
vi test

vi 편집기의 구조

vi 편집기는 명령모드, 입력모드, 마지막 행 모드로 총 3가지 모드로 구성됨

1. 명령 모드(command mode)

vi를 실행시키면 가장 먼저 접하는 기본 모드. 명령 모드에서는 방향키로 이동할 수 있으며, 입력 모드 혹은 마지막 행 모드로 전환이 가능하다.

2. 입력 모드(insert mode)

편집 모드라고도 불리며, 명령 모드에서 "i" , "a" , "o" 명령어를 통해 입력 모드로 전환 가능하다. 입력 모드에서는 자유롭게 코드나 글을 작성 할 수 있으며, "ESC"키를 입력하여 명령 모드로 다시 전환된다.

3. 마지막 행 모드(Last line mode)

명령 모드에서 ":"키를 입력하여 화면 맨 아랫줄에서 명령을 수행하는 모드. 작성한 내용을 저장하고 vi를 종료할지, 그냥 vi를 종료할지 등의 명령을 입력할 수 있다

vi 명령어 정리


파일 저장 및 종료

모드 명령키 설명
마지막 행 모드 :q vi에서 작업한것이 없을때 vi 종료
마지막 행 모드 :q! 작업한 내용을 저장하지 않고 종료
마지막 행 모드 :w [파일명] 작업한 내용을 저장만 한다. 파일명을 지정하면 새 파일로 저장
마지막 행 모드 :wq, :wq! 작업한 내용을 저장하고 vi를 종료
명령 모드 ZZ 작업한 내용을 저장하고 vi를 종료
내용을 편집한 후 vi를 종료하려면 명령모드나 마지막 행 모드에서 명령을 입력해야 합니다. 마지막 행 모드로 가려면 : 을 누르면 됩니다.


입력모드로 전환

명령키 설명
i 현재 커서 앞에 입력
a 현재 커서 뒤에 입력
o 커서가 위치한 행의 다음 행에 입력
I (대문자 i) 커서가 위치한 행의 첫 컬럼으로 이동하여 입력
A 커서가 위치한 행의 마지막 컬럼으로 이동하여 입력
O 커서가 위치한 행의 이전 행에 입력
vi 편집기에서 내용을 입력하려면 입력모드로 전환해야 합니다.


커서 이동

명령키 설명
k 커서를 위로 이동
j 커서를 아래로 이동
h 커서를 왼쪽으로 이동
l 커서를 오른쪽으로 이동
w 커서를 다음 단어의 첫 글자로 이동
^ / O 커서를 현재 행의 처음으로 이동
$ 커서를 현재 행의 마지막으로 이동
G 파일의 마지막 행으로 커서를 이동
gg 파일의 첫 행으로 커서를 이동
행번호G 지정한 행 번호로 커서를 이동
H 커서를 화면의 맨 윗행으로 이동
M 커서를 화면의 중간 행으로 이동
L 커서를 화면의 맨 아랫행으로 이동
B Page Up
F Page Down
숫자% 입력한 숫자 퍼센트에 해당하는 줄로 커서를 이동
vi에서는 마우스로 커서를 이동할 수 없고 오로지 키보드로만 커서를 이동할 수 있습니다.


화면 이동

명령키 설명
Ctrl + u 화면의 절반 만큼 위로 이동
Ctrl +ㅇ 화면의 절반 만큼 아래로 이동
Ctrl + b / Page Up 한화면 위로 이동
Ctrl + f / Page Down 한화면 아래로 이동
Ctrl + y  화면을 한 행 위로 이동
Ctrl + e 화면을 한 행 아래로 이동


내용 수정

명령키 설명
r 커서가 위치한 글자를 다른 글자로 수정
cc 커서가 위치한 행의 내용을 모두 수정
C 커서 위치로부터 행의 끝까지 수정
cw, [수정할 단어 수]cw - 커서위치에서부터 현재 단어의 끝까지 수정 - 숫자cw는 커서 위치로부터 지정한 숫자의 단어 만큼 수정
s, [수정할 글자 수]s - 커서 위치로부터 ESC키를 입력할때까지 수정 - 숫자s는 커서 위치로부터 지정한 숫자만의 글자를 수정


내용 삭제

명령키 설명
x, [삭제할 글자 수]x - 커서가 위치한 글자를 삭제 - x앞에 삭제할 글자수를 지정 가능
dw, [삭제할 단어 수]dw - 커서가 위치한 단어를 삭제. - dw앞에 삭제할 단어수를 지정 가능
dd, [삭제할 행 수]dd - 커서가 위치한 행을 삭제. - dd앞에 삭제할 행의수를 지정 가능
D 커서 위치로부터 행의 끝까지 삭제


명령 취소

명령키 설명
u 명령을 취소
U 해당 행에서 한 모든 명령을 취소
:e! 마지막으로 저장한 내용 이후의 것을 모두 취소
윈도우에서의 Ctrl +Z와 비슷한 기능이라고 생각하시면 됩니다.


범위 지정

명령키 설명
1, $, % 1행부터 마지막 행까지 범위를 지정
1,. 1행부터 커서가 있는 행까지 지정
.,$ 커서가 있는 행부터 마지막 행까지 지정
.,.+2 현재 행과 두번째 아랫행까지 지정
10,20 10행부터 20행까지 지정
윈도우에서는 마우스를 드래그하면 범위를 지정할 수 있지만 vi에서는 위의 명령키를 입력하여 범위를 지정하여야 합니다.


내용 복사하기 / 잘라내기 / 붙이기

명령키 설명
yy, [복사할 행 수]yy - 커서가 위치한 행을 복사 - yy앞에 복사할 행의 수를 지정 가능
dd, [잘라내기할 행 수]dd - 커서가 위치한 행을 잘라내기 - 삭제와 같은 명령어입니다. dd앞에 잘라내기할 행 숫자를 입력 가능
p 커서가 위치한 행의 아래쪽에 붙여넣기
P 커서가 위치한 행의 위쪽에 붙여넣기


내용 검색

명령키 설명
/문자열 문자열을 커서 아래 방향으로 검색
?문자열 문자열을 커서 위 방향으로 검색
n 원래 방향으로 다음 문자열을 검색
N 반대 방향으로 다음 문자열을 검색
윈도우에서는 마우스를 드래그하면 범위를 지정할 수 있지만 vi에서는 위의 명령키를 입력하여 범위를 지정하여야 합니다.


내용 치환

명령키 설명
:s/[대상문자열]/[바꿀문자열] 커서가 위치한 행에서 첫번째로 나오는 대상문자열을 바꿀문자열로 바꿉니다.
:%s[대상문자열]/[바꿀문자열] 파일 전체에서 모든 대상문자열을 바꿀문자열로 바꿉니다.
:[범위]s[대상문자열]/[바꿀문자열] 범위 내 모든 각 행에서 첫번쨰로 나오는 대상문자열을 바꿀문자열로 바꿉니다.
:[범위]s[대상문자열]/[바꿀문자열]g 범위 내 모든 행에서 대상문자열을 바꿀문자열로 바꿉니다.
:[범위]s[대상문자열]/[바꿀문자열]gc 범위 내 모든 행에서 대상문자열을 바꿀문자열로 바꾸되 수정할 지 여부를 묻습니다.
문자열을 바꿀 수도 있습니다. 마지막 행모드로 전환을 해야만 사용이 가능합니다.

profile
Front-End Designer

1개의 댓글

comment-user-thumbnail
2022년 7월 19일

안녕하세요 공부하려고 찾다가 좋은 글 읽었네요!
그림이 이해가 잘되게 해두셔서 블로그에 좀 두고 보려고 합니다
혹 허용하지 않으시면 내리겠습니다
잘 보고 갑니다!

답글 달기