Section 01시작하기 전에
이 책은 단순히 읽기만 하는 책이 아닙니다. 모든 명령어를 직접 Vim에 입력하며 학습해야 합니다. 연습문제를 건너뛰지 마세요. 근육 기억을 만드는 것이 목표입니다.
Vimscript를 배우려면 먼저 Vim을 열어 두어야 합니다. 이 책의 모든 페이지에는 "다음 명령을 실행하세요"라는 지시가 가득합니다. 그것을 눈으로만 읽고 넘어간다면 아무것도 배우지 못합니다. Vim 창을 하나 띄워 두고, 모든 명령을 손가락으로 직접 입력하세요.
Vim에는 설정 파일 ~/.vimrc가 있습니다. 우리가 만들 매핑과 옵션은 결국 이 파일에 쌓여 갑니다. 아직 이 파일이 없다면 만들어 두세요. 빈 파일이어도 괜찮습니다.
:echo, <leader>, <cr> 등)는 모두 원문 그대로 둡니다. 한국어로 번역하면 Vim에 입력할 수 없기 때문입니다. 설명만 한국어로 읽고, 코드는 영어 그대로 입력하세요.
Section 02메시지 출력하기
가장 먼저 배울 명령은 echo입니다. Vim을 열고 다음 명령을 실행하세요:
:echo "Hello, world!"
Vim이 창 하단에 Hello, world!를 표시할 것입니다. 간단하죠. 이제 이것과 거의 같은 명령을 실행해 보세요:
:echom "Hello again, world!"
이번에도 Hello again, world!가 표시됩니다. 두 명령이 똑같아 보이지만, 결정적인 차이가 있습니다.
:echo는 메시지를 화면에 출력하지만, 곧 사라집니다.
:echom(echo message)은 메시지를 출력하면서 동시에 메시지 로그에 영구히 기록합니다. 나중에 그 메시지를 다시 볼 수 있습니다.
이제 다음 명령을 실행해 메시지 로그를 확인하세요:
:messages
Vim이 echom으로 출력했던 메시지들의 목록을 보여줍니다. echo로 출력한 Hello, world!는 목록에 없을 것입니다. 사라졌기 때문입니다.
echom을 쓰세요. 메시지가 빠르게 지나가 버려도 :messages로 다시 확인할 수 있습니다. 단순히 잠깐 보여주기만 하면 될 때는 echo가 적당합니다.
Section 03지속적 출력과 주석
여러 메시지를 한 번에
한 줄에 여러 개의 echom을 두고 싶을 때가 있습니다. 명령들 사이를 파이프 문자(|)로 구분하면 됩니다:
:echom "foo" | echom "bar"
Vim은 이를 두 개의 별도 명령으로 취급합니다. :messages로 확인하면 두 줄 모두 보입니다.
주석
Vimscript에서 주석은 큰따옴표(")로 시작합니다. 따옴표부터 줄 끝까지가 주석으로 처리됩니다:
" 이 줄은 주석입니다. Vim은 이 줄을 무시합니다. :echom "이건 실행됩니다" " 명령 뒤의 주석
Section 04옵션 설정하기
Vim에는 동작 방식을 바꿀 수 있는 수많은 옵션이 있습니다. 옵션은 두 가지 주요 종류로 나뉩니다: 불리언 옵션("켜짐" 또는 "꺼짐")과 값을 갖는 옵션입니다.
불리언 옵션
다음 명령을 실행하세요:
:set number " 줄 번호 켜기 :set nonumber " 줄 번호 끄기
number는 불리언 옵션입니다. :set number로 켜고, 앞에 no를 붙인 :set nonumber로 끕니다. 모든 불리언 옵션이 이렇게 동작합니다.
옵션을 현재 상태의 반대로 토글할 수도 있습니다. 옵션 이름 뒤에 느낌표(!, "bang")를 붙이세요:
:set number! " 줄 번호가 다시 나타남 :set number! " 다시 사라짐
옵션이 현재 어떻게 설정되어 있는지 묻고 싶다면 물음표(?)를 사용합니다:
:set number? " "number" 또는 "nonumber"를 표시
:set <name> — 옵션을 켭니다.
:set no<name> — 옵션을 끕니다.
:set <name>! — 옵션을 토글합니다(현재의 반대로).
:set <name>? — 옵션의 현재 값을 묻습니다.
Section 05값을 갖는 옵션
일부 옵션은 단순히 켜짐/꺼짐이 아니라 값을 갖습니다. 다음 명령들을 실행하고 각각 실행 후 무슨 일이 일어나는지 확인하세요:
:set number :set numberwidth=10 :set numberwidth=4 :set numberwidth?
numberwidth 옵션은 줄 번호를 담는 열의 너비를 바꿉니다. 값을 갖는 옵션은 :set <name>=<value>로 변경하고, 평소처럼 :set <name>?로 확인합니다.
타이핑을 줄이기 위해, 하나의 :set 명령에 여러 옵션을 한 번에 지정할 수도 있습니다:
:set number numberwidth=6
| 구분 | 설정 | 확인 | 예시 옵션 |
|---|---|---|---|
| 불리언 | :set wrap / :set nowrap | :set wrap? | number, wrap, hlsearch |
| 값 | :set numberwidth=4 | :set numberwidth? | numberwidth, textwidth, shiftwidth |
| 토글 | :set number! | — | 불리언 옵션 전용 |
Section 06연습문제
:help echo와:help echom을 읽으세요. 두 명령의 차이를 문서로 확인하세요.:help echoerr과:help echon을 읽으세요. 어떤 상황에서 쓸지 상상해 보세요.:help 'number'를 읽으세요(따옴표에 주의 — 옵션은 따옴표로 감쌉니다).:help relativenumber,:help numberwidth,:help wrap,:help shiftround,:help matchtime을 읽으세요.- 이 옵션들을 원하는 대로 설정하는 줄 몇 개를
~/.vimrc파일에 추가하세요.
:help는 Vim 사용자의 가장 강력한 친구입니다. 이 책은 모든 것을 설명하지 않습니다 — 대신 어디를 봐야 할지 알려줍니다. 연습문제의 :help 항목을 건너뛰지 마세요.