vi는 "Last Line 모드", "입력(input)모드"와 "명령(command)"모드의 세가지 모드가 있다. 노트패드 같은 에디터들은 실행 즉시 편집을 할 수 있지만, vi는 그렇지 않다. 입력모드에서만 문자를 입력을 할 수 있다. Last Line 모드는 ed 모드라고 부르기도 한다. 이하 ed 모드라고 부르겠다.
처음 vi를 실행하면 "명령모드"다. 여기에서 "i, a, o"키 중 하나를 누르면 입력모드로 전환한다. 입력 모드에서 문자열을 입력 할 수 있다. 여기에서 esc 키를 누르면 "명령 모드"로 전환한다. "명령 모드"에서는 이동과 삭제, 복사 와 같은 작업을 수행 할 수 있다. 명령 모드에서 콜론(:)을 누르면 ed 모드로 전환된다. 문서 저장, 문서 불러오기와 같은 명령들을 수행 할 수 있다.
vi 첫 화면이다. 분명히 프롬프트가 뜨는데, 입력모드로 진입하기 전에는 방향키도 먹지 않고, 글자입력도 되지 않는다. 많은 사용자가 여기에서 좌절한다. 일주일 정도만(일주일이나?)투자해 보자. 그만한 가치가 있다.
모드 분리의 장점
키보드로 모든 것을 처리 할 수 있다. 손가락이 키보드를 떠날 필요가 없다. 방향키도 필요 없다. 이게 별다른 장점이냐라고 생각 할 수 있지만 적응하고 나면, 속도와 집중도에서 많은 차이를 보이기 때문에 굉장히 큰 장점이된다.
일단 VIM의 모드와 명령들에 익숙해지면, eclipse, vscode, atom, vs code등의 IDE를 이용하더라도 VIM 플러그인을 설치하게 된다. 나 역시 여러가지 이유로 다른 IDE를 사용하게 되는데, vim 플러그인 설치를 가장 먼저한다.
입력 모드
명령 모드에서 a, i, o 키 중 하나를 눌러야 입력모드로 진입할 수 있다. 키에 따라서 입력시작 위치에 차이가 있다.
a
append
커서가 한 칸뒤로 이동한다.
i
input
커서의 지금 위치에서 입력을 시작한다.
o
openline
커서 아래에 빈줄을 만들어서 입력을 시작한다.
입력을 끝내고 파일을 저장하고 싶다면, esc 키를 눌러서 명령모드로 진입해야 한다. 명령모드로 진입한다면 ":<명령>"을 실행하면 된다. 예를 들어 지금 입력한 내용을 myfile.txt 이름의 파일로 저장하고 싶다면
esc 키를 누르고
:w myfile.txt 를 입력
하면 된다. 여기에서 i,a,o 키를 누르면 다시 입력상태로 되돌아간다.
이동
입력모드에서 방향키로 이동 할 수 있지만, vim 사용자는 vi모드에서 h,j,k,l키로 이동한다. FPS 게임에서 WASD로 이동하는 것의 에디터 버전이라고 보면 되겠다. 명령모드에서 이동하는 이유는 빠르고, 편하기 때문이다. 익숙해지면 방향키따위는 사용하지 않게 될 것이다.
h
왼쪽으로 한칸 이동
j
아래로 한칸 이동
k
위로 한칸 이동
l
오른쪽으로 한칸 이동
줄 단위로 이동 할 수도 있다.
$
문단 마지막으로 이동
^
문단 처음으로 이동
(
이전 문장으로 이동
)
다음 문장으로 이동
w
다음 단어로 이동
b
이전 단어로 이동
f문자
다음번 발견되는 문자로 이동
F문자
이전에 처음 발견되는 문자로 이동
페이지 단위로 이동해보자.
Ctrl + f
다음 페이지로 이동
Ctrl + b
이전 페이지로 이동
Ctrl + u
절반 페이지만큼 이동
Ctrl + d
절반 페이지만큼 뒤로 이동
H
현재 화면의 맨 윗줄로 이동
M
현재 화면의 중간 줄로 이동
L
현재 화면의 마지막 줄로 이동
편집
dd
현재 줄 삭제
dw
단어 삭제
yy
현재 줄 복사
p
붙여 넣기
r
한 글자 교체
u
되돌리기
x
현재 글자 지우기
X
앞 글자 지우기
>
들여쓰기
<
내어쓰기
.
이전 명령 다시 실행
J
다음 줄을 지금 줄의 끝으로 이어 붙이기
비쥬얼 블럭 모드
문서의 일정 부분에 대한 편집을 할 때, 해당 부분을 블럭으로 지정 할 수 있다. 비쥬얼 모드에 진입한 다음에는 이동키를 이용해서 블럭을 지정한다. 예를 들어 v키를 입력하고, j를 누르면 아래방향으로 블럭이 설정된다.
||v ||비쥬얼 모드로 진입 ||
y
블럭을 복사
c
블럭을 잘라내기
~
대소문자 변경
Ctrl+A
숫자를 증가시키기
Ctrl+B
숫자를 감소시키기
J
블럭내에 있는 문단을 모두 이어 붙이기. (하나의 문단으로 만들기)
Ctrl+A, Ctrl+B가 무슨 소용이 이겠냐라고 생각 할 수 있겠다. 아래와 같은 문서가 있다고 가정해보자.
1. 한국
3. 일본
4. 싱가폴
5. 말레이시아
6. 독일
순서가 어긋나버렸다. 3번 부터 6번까지 일일이 찾아서 수정해야겠지만 Ctrl+A로 한키에 해결 할 수 있다.
Contents
Vim Quick Start 가이드
Vim 시작
Vim의 모드
모드 분리의 장점
입력 모드
이동
편집
비쥬얼 블럭 모드
찾기
문서 저장/읽기
창관리
vim 단축키
정리
Recent Posts
Archive Posts
Tags