메뉴

문서정보

목차

Vim Quick Start 가이드

Vim 시작

# vi filename.txt 

Vim의 모드

vi는 "Last Line 모드", "입력(input)모드"와 "명령(command)"모드의 세가지 모드가 있다. 노트패드 같은 에디터들은 실행 즉시 편집을 할 수 있지만, vi는 그렇지 않다. 입력모드에서만 문자를 입력을 할 수 있다. Last Line 모드는 ed 모드라고 부르기도 한다. 이하 ed 모드라고 부르겠다.

 모드 변환

처음 vi를 실행하면 "명령모드"다. 여기에서 "i, a, o"키 중 하나를 누르면 입력모드로 전환한다. 입력 모드에서 문자열을 입력 할 수 있다. 여기에서 esc 키를 누르면 "명령 모드"로 전환한다. "명령 모드"에서는 이동삭제, 복사 와 같은 작업을 수행 할 수 있다. 명령 모드에서 콜론(:)을 누르면 ed 모드로 전환된다. 문서 저장, 문서 불러오기와 같은 명령들을 수행 할 수 있다.

 vi 첫 화면

 vi 첫 화면

vi 첫 화면이다. 분명히 프롬프트가 뜨는데, 입력모드로 진입하기 전에는 방향키도 먹지 않고, 글자입력도 되지 않는다. 많은 사용자가 여기에서 좌절한다. 일주일 정도만(일주일이나?)투자해 보자. 그만한 가치가 있다.

모드 분리의 장점

키보드로 모든 것을 처리 할 수 있다. 손가락이 키보드를 떠날 필요가 없다. 방향키도 필요 없다. 이게 별다른 장점이냐라고 생각 할 수 있지만 적응하고 나면, 속도와 집중도에서 많은 차이를 보이기 때문에 굉장히 큰 장점이된다.

일단 VIM의 모드와 명령들에 익숙해지면, eclipse, vscode, atom, vs code등의 IDE를 이용하더라도 VIM 플러그인을 설치하게 된다. 나 역시 여러가지 이유로 다른 IDE를 사용하게 되는데, vim 플러그인 설치를 가장 먼저한다.

입력 모드

명령 모드에서 a, i, o 키 중 하나를 눌러야 입력모드로 진입할 수 있다. 키에 따라서 입력시작 위치에 차이가 있다.
a append 커서가 한 칸뒤로 이동한다.
i input 커서의 지금 위치에서 입력을 시작한다.
o openline 커서 아래에 빈줄을 만들어서 입력을 시작한다.
입력을 끝내고 파일을 저장하고 싶다면, esc 키를 눌러서 명령모드로 진입해야 한다. 명령모드로 진입한다면 ":<명령>"을 실행하면 된다. 예를 들어 지금 입력한 내용을 myfile.txt 이름의 파일로 저장하고 싶다면
  1. esc 키를 누르고
  2. :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로 한키에 해결 할 수 있다.

찾기

/단어 단어를 찾는다. n은 다음, N은 이전.
* 현재 단어를 앞 방향으로 찾는다.
# 현재 단어를 뒷 방향으로 찾는다.

문서 저장/읽기

:w 문서 저장
:q 문서 닫기
:q! 저장하지 않고 닫기
:wq 저장하고 닫기
:숫자 지정한 줄로 이동

창관리

여러 문서를 편집하려면 창을 나눠서 사용해야 할 것이다.
:new 새로운 창을 만든다.
:vs 세로로 분할된 창을 만든다.
:split 가로로 분할된 창을 만든다.
Ctrl+w 분할된 창 사이를 이동한다.

vim 단축키

보낸 사람 Linux

정리

문서 편집을 위해서 딱 필요하다 싶은 내용만 추려서 정리했다. 문자열 치환, 폴더, 탭 페이지, 파일 내용 비교 등의 고급? 기술은 별도 문서로 다룰 생각이다.