Vi 에디터

Vi

Linux, Unix 또는 Mac에서 터미널에서 사용 가능한 편집기입니다.
위 OS에서는 따로 설치하지않아도 미리 설치가 되어있습니다.
기본적으로 외워야할 단축키가 많기 때문에 처음 접근하기가 어려운 편입니다.
그래도 익숙해지고 나면 생각보다 훨씬 사용하기 편하고 강력한 편집기가 됩니다.
vi에서 조금 발전된 형태의 Vim (Vi improved)가 있으며, vi 보다 발전된 기능이 많아서
지금은 vi보다 더 많이 사용되고 있습니다.

Vi 사용법

vi를 사용하기 위해서는 터미널에서 vi 파일명을 입력하면 파일이 존재하면 해당 파일이 열리고 파일이 없다면 처음부터 파일을 작성할 수 있게 편집기가 열립니다.
처음 vi를 접하면 파일을 열고나서 입력하려고 하면 입력은 되지 않고, 마음대로 편집할 수가 없을거라 생각합니다.

vi를 제대로 사용하기 위해선 모드, 단축키를 숙지할 필요가 있습니다.
사용법을 익히기 위해서는 Vim에서 사용 가능한 튜토리얼을 진행하면서 차근차근 배우는 것을 추천합니다.
터미널에서 vimtutor 를 입력하면 기본적인 튜토리얼을 진행할 수 있습니다.
아래의 내용은 vimtutor를 진행하면서 정리한 내용입니다.

모드

vi에는 2가지 모드가 존재합니다.
명령모드와 편집모드가 존재하며, 처음 파일을 열면 명령모드로 실행됩니다.
명령모드에서는 알파벳마다 정해진 단축키가 있으며, 해당 단축키를 실행하는 모드입니다.
대소문자별로 단축키가 다르게 구성되어 있습니다.

이동

vi에서는 해당 단축키로만 커서 이동이 가능하지만, Vim에서는 화살표로도 이동이 가능합니다.

단축키 설명
h 왼쪽으로 이동
j 아래로 이동
k 위로 이동
l 오른쪽으로 이동
w 한 단어(Word) 오른쪽으로 이동
b 한 단어(Word) 왼쪽으로 이동(Back)
Spacebar 한 문자 오른쪽으로 이동
Backspace(←) 한 문자 왼쪽으로 이동
H 화면 맨 위로 이동
M 화면 중간으로 이동
L 화면 맨 아래로 이동
[라인번호] + G 라인번호를 입력하면 해당 라인으로 이동. 생략하면 마지막 줄로 이동

삽입

삽입 명령어를 누르면 명령모드에서 편집모드로 변경이 되어, 텍스트 입력이 가능합니다.
편집모드에서 명령모드로 돌아가고 싶다면 ESC를 누르면 됩니다.

단축키 설명
i 커서 왼쪽에서 편집 모드 변경
a 커서 오른쪽에서 편집 모드 변경
I 커서가 있는 행의 처음에서 편집 모드 변경
A 커서가 있는 행의 끝에서 편집 모드 변경
o 커서 아래에 한 줄 삽입하며 편집 모드 변경
O 커서 위에 한 줄을 삽입하며 편집 모드 변경

삭제

명령모드에서 사용 가능합니다.
삭제명령어 중에 d를 입력하는 명령어가 있는데, d는 삭제명령으로 다음과 같은 형식으로 사용합니다.

[횟수]d명령어 또는 d[횟수]명령어
횟수는 d명령어를 반복 수행해야할 때, 입력하며, 생략하게 되면 명령어가 1번만 수행됩니다.

단축키 설명
x 커서 위치의 한 문자 삭제
dw 커서에서 한 단어의 끝까지 삭제(공백 포함)
de 커서에서 한 단어의 끝까지 삭제(공백 미포함)
d$ 커서에서 그 라인의 끝까지 삭제
dd 한 줄 전체 삭제(dd 또는 [횟수]dd만 가능)

취소

명령모드에서 사용 가능합니다.

단축키 설명
u 이전 행동 취소
U 해당 라인에서 수정한 내용을 모두 취소
Ctrl + R 취소한 내용을 다시 실행

복사 & 붙여넣기

명령모드에서 v를 누르면 visual mode로 동작합니다. v는 문자 단위로 선택이 되며,
V는 줄 단위로 선택할 수 있습니다.

화살표키를 이용해 복사하고자하는 블록을 선택합니다. 그리고 y를 누르면 해당 블록을 복사할 수 있습니다.
또는, yy키를 현재 커서가 있는 행의 내용을 복사할 수 있습니다.

vi는 사용자가 삭제 명령(d)를 실행하면 버퍼에 방금 삭제한 내용을 저장합니다.

위와 같이 복사를 하고 나서 붙여넣고자 한다면 붙여넣을 위치로 커서를 이동한 후, p 를 누르면 붙여넣기가 됩니다. 보통 커서뒤로 붙여지기가 되며, dd 명령어로 한 줄을 삭제했다면 커서 아래줄에 붙여넣기가 됩니다.


치환(대체)

명령모드에서 명령어를 사용하게 되면 편집모드로 변경이 되어서 입력된 글자를 덮어쓸 수 있습니다.

단축키 설명
r 커서 위치의 한 글자를 변경
R 하나 이상의 글자를 변경
s/대상/변경문자/g 해당 라인에서 처음으로 일치하는 대상 변경
#,#s/대상/변경문자/g #,# = 첫번째 # 라인부터 두번쨰 # 라인까지 일치하는 대상 변경
%s/대상/변경문자/g 전체 파일에서 일치하는 모든 대상을 변경

바꿀 때마다 확인을 하고 싶다면 /gc로 사용합니다.


검색

명령모드에서 사용 가능합니다.

단축키 설명
/검색어 해당 검색어로 검색
n 같은 검색어 다시 찾기
N 같은 검색어 반대 방향으로 다시 찾기
?검색어 해당 검색어를 역방향으로 검색
% 커서 위치의 괄호((, [, {) 찾기

괄호 찾기

명령모드에서 %를 입력하면 커서 위치의 괄호((, [, {)의 짝을 찾을 수 있습니다.


저장 & 종료

명령모드에서 사용 가능하며, 파일을 저장하거나 종료할 때 사용합니다.

단축키 설명
:q vi 종료(파일이 수정되었으면 에러 발생)
:q! 저장하지않고 종료
:w 파일명 해당 파일명으로 저장
:#,# w 파일명 #,# 범위의 라인을 해당 파일명으로 저장
:r 파일명 현재 파일의 커서위치에 해당 파일명으로 입력한 파읽을 읽음


Vi tutorial 사이트

실시간으로 연습할 수 있는 사이트 Vim cheat sheet