[번역] Vim 정복하기: 4주 계획

Jungseob Shin
10 min readOct 15, 2017

--

이 글은 Peter Jang 님의 블로그 포스트 [How To Learn Vim: A Four Week Plan]을 번역한 것입니다. 번역을 허락해주셔서 감사합니다. 아직도 Vim이 서툰 저에게 도움이 되는 글이네요.

custom color scheme, syntax highlighting, linting, and autocomplete을 적용한 Vim 화면

Vim은 배우기 어렵다고 악명이 높은 command line text editor 입니다. (지나가는 농담으로 순수한 랜덤 스트링을 얻기 위해서 웹 개발자에게 Vim 앞에 앉혀놓고 Vim을 종료시키게 해보라고 하지요.) 그렇다면 이미 다른 text editor나 IDE를 편하게 사용하고 있는 상황에서 당신은 왜 Vim을 배워야할까요? Vim을 배워서 얻을 수 있는 장점은 다음과 같습니다.

  • Vim은 이미 Unix 기반 시스템에 설치되어 있기 때문에, 대부분의 서버 환경에서 바로 실행하여 파일을 수정할 수 있습니다. (최고 장점)
  • Vim은 대부분의 text editor들과 IDE들과 비교하여 매우 가볍기 때문에, 하드웨어 파워가 부족한 환경에서도 빠르고 효과적으로 동작합니다.
  • Vim은 키보드 중심으로 동작하기(대부분의 액션이 home row-키보드 가운데 행-중심에서 발생합니다.) 때문에, 당신을 능률적으로 만들어줍니다.

저는 위에 세 번째 장점 “당신을 능률적으로 만든다”에는 물음표를 붙였습니다. – 이 장점이 모든 사람들에게 해당하는지는 당신이 종종 듣게 될 논쟁사항입니다. 기본적으로 Vim을 효율적으로 사용하려면 단순한 학습뿐만 아니라 체득(실습+습관화)할 수 있도록 시간을 많이 투자해야 합니다. 체득에 투자한 만큼, 그리고 현재 체득에 투자하고 있는 시간만큼 당신은 Vim을 사용하면서 시간을 절약할 수 있습니다. 제가 생각하는 Vim을 배우는 가장 좋은 이유는 복잡한 기술을 배워가는 시간이 즐겁다는 것입니다. 이는 사람들이 새로운 악기를 배우면서 얻는 즐거움과 같은 것 같습니다!

만약에 Vim에 대해 흥미가 생겼다면 아래 4주 계획은 Vim을 배우는데 있어서 도움이 될 것 입니다. 이 계획은 튜토리얼과 포럼을 수없이 드나들며 얻은 조언을 바탕으로 제가 Vim을 배운 방법입니다. 또 여기에 저만의 몇 가지 tip을 추가했습니다.

첫째 주: vimtutor 하루에 한 번, 매일 끝까지 실습하기

많은 사람들이 vim 기본 기능을 배우는 가장 좋은 방법으로 터미널에서 아래 간단한 명령어를 쳐보는 것이라고 생각합니다.

$ vimtutor

이 명령어는 필수적인 Vim 명령어를 단계별로 진행해볼 수 있는 설명이 있는하나의 텍스트 파일을 Vim을 통해 열 것 입니다. 모두 따라하기까지 대략 30분 정도 소요됩니다. 만약에 vimtutor의 명령어들을 모두 학습한다면, 당신은 보다 생산적으로 Vim을 사용할 준비가 될 것 입니다.

문제는 너무 많은 명령어들이 vimtutor에 존재한다는 것입니다. 뭐, 한번 앉아서 모든 것을 배울 방법은 없습니다! 저의 추천은 최소한 1주는 매일 vimtutor를 반복 학습하는 것입니다. 매번 할 때마다 학습시간이 짧아지는 것을 느낄 수 있을 것 입니다. 스스로 목표를 세워보세요. – 모든 과정을 5분 안에 완료해보세요. 여기서 포인트는 모든 명령어를 기억하라는 것이 아닙니다. 중요한 것은 기본 탐색과 편집 명령어들이 습관이 되도록 충분한 시간을 연습하라는 것입니다.

만약에 당신이 Vim의 활용 목적으로 서버 환경에서 파일을 편집하는 것으로 충분하다면 여기까지만 학습해도 충분합니다. – 이미 당신은 위험할 정도로 많은 것을 알고 있습니다! 하지만 만약에 text editor로써 Vim을 활용하고자 한다면, 다음 단계를 이어나가세요.

둘째 주: 최소한의 설정, 플러그인 없이 Vim 사용하기

자, 이제 당신이 Vim 탐색과 편집 기능을 능숙하게 사용한다면 개인적인 작업방식을 위한 설정이 필요할 것입니다. Vim은 깔끔하고 오래된 기본 설정을 내장하고 있지만 vimrc 설정 파일을 통해서 커스터마이징하기 쉽습니다. 하지만 플러그인들을 과도하게 사용하여 Vim을 완벽한 IDE로 만드는 것이 중요한 것이 아닙니다. – Vim은 IDE가 아닌, Vim 그 자체로서 훌륭한 도구입니다.

대신에 이 포스팅을 따라 자신만의 vimrc 파일을 만들어보세요. 시작 포인트로, 아래는 제가 설정한 내용입니다.

  • color scheme 설정(저는 vim-code-dark 테마를 사용했고, 이는 Visual Studio Code 스타일 기반입니다.)
  • syntax highlighting 설정
  • spaces and tabs 설정
  • auto indentation 설정(자동 들여쓰기)
  • line numbers 설정
  • tab completion을 통한 하위폴더 file 검색(이 비디오를 5분 참고하면 됩니다.)
  • insert 모드 빠른 진입을 위한 ESC 설정(저는 caps lock을 CTRLCTRL C를 insert mode 나오기로 설정했습니다.)

솔직하게, 이게 전부입니다. (Vim이 지원하지 않는 언어에 대한 플러그인 설치는 예외입니다.) 앞으로 1주일 간의 목표는 멋진 플러그인들과 기타 설정을 추가하지 않고 사용해보는 것입니다. 이는 매우 고통스러운 과정이지만 당신의 Vim 설정을 셋팅 하느라 아까운 연습시간을 소비하지 않을 것입니다.

Pro tip: vim 설정을 할 때 home 디렉토리에 .vim 폴더를 생성하여 아래 구조로 셋팅해보세요. (자세한 내용은 링크 참고하세요.) Vim의 최신 버전은 .vim 디렉토리 안에 vimrc 파일을 찾을 수 있기 때문에 이 하나의 폴더로 모든것을 설정할 수 있습니다. git 저장소에 당신만의 .vim 디렉토리를 만드는 것이 가능하기 때문에 어느 컴퓨터에서도 쉽게 clone을 받을 수 있습니다.

.vim/
├── colors/ <- directory for color schemes
├── plugin/ <- directory for standard
└── vimrc <- file with main config

셋째 주: 최소한의 플러그인으로 Vim 사용하기

실제 프로젝트에 Vim을 활용하게 된다면 Vim이 제공하는 기능에 대한 실력이 더 높아질 것이고, 추가적인 커스터마이징에 대한 유혹이 생길 것입니다. 하지만 그럴수록 Vim의 작동방식을 근본적으로 변경할 수 있는 플러그인은 피해야합니다. 다음 목록은 제가 권장하지 않는 당신이 피해야할 인기있는 플러그인들입니다.

  • plugin manager 설치하지 않기(Vim의 최신버전에 별도로 필요없습니다.)
  • tree 탐색기나 fuzzy 파일 탐색기 플러그인 설치하지 않기(:find 명령어로 하위 폴더 검색 가능)
  • visual tabs 플러그인 설치하지 않기(순수 Vim buffers를 사용해보세요. :b <TAB> 을 활용하세요.)
  • 자동완성 플러그인 설치하지 않기(<CTRL n> 활용하기)
  • 다중 커서 플로그인 설치하지 않기(n. 함께 / 검색 활용하기)

여기서 말하고자 하는 점은 플러그인 설치는 종종 Vim을 배우는데 있어서 걸림돌이 된다는 것입니다. 위의 플로그인들은 시간을 절약할 수 있는 매우 좋은 도구지만 순수한 Vim 자체 기능을 완전하게 수행하는 방법을 체득한 이후에 설치하는 것이 좋습니다.

다시 말해서 Vim의 핵심동작을 변경하지 않는 몇 가지 플러그인은 당신을 조금 더 편하게 만들어줍니다. 여기 그런 종류의 플러그인이 몇 가지 있습니다.

  • auto-pairs.vim 설치(brackets, parens, quotes를 쌍에 맞게 추가하거나 삭제해줍니다.)
  • endwise.vim 설치(Ruby를 사용하는 경우 if, do, def 등 다음에 end를 더해줍니다.)
  • ragtag.vim 설치(HTML, erb 등의 tags에 도움이 됩니다.)

Week 4: Compose Vim commands with verbs and nouns

넷째 주: 동사와 명사를 활용한 Vim 명령어 사용

이 시점에는 새로운 것을 기억하기 보다는 새로운 명령어 조합에 집중해야합니다. 새로운 명령어를 조합하기 위해서는 Vim을 하나의 언어라고 생각하면 도움이 됩니다. Chris Toomey의 Vim Language Talk을 통하면 개념이 얼마나 강력한지 보여줍니다:

요약하면, 당신은 몇 가지 동사와 명사가 필요합니다.

  • 동사 — d (delete), c (change), y (yank/copy), > (indent)
  • 명사(이동) — w (word), b (back a word), 2j (down 2 lines)
  • 명사(텍스트 객체) — iw (inner word), it (inner tag), i” (inner quotes)

이 개념을 알고나면 당신은 동사와 명사를 조합하여 새로운 몇 가지 명령어를 조합할 수 있습니다.

  • dw — 단어 끝까지 삭제
  • diw — 커서에 해당하는 전체 단어 삭제
  • y4j — 4줄 복사
  • cit — HTML 태그 안의 내용 변경

요지는 30개의 명령어들을 기억한다면 당신은 2,000개의 명령어들을 조합할 수 있다는 것입니다. 한번만 Vim을 잘 이해하면 됩니다. 저는 넷째 주 과제로 이런 과정을 제시합니다. 따라서 3주 후에 당신이 이 과정을 수행하고 달성하기 위해서는 30개의 명령어를 잘 다룰 수 있어야 합니다.

Vim 언어를 위한 플러그인 설치에 대해서 이야기 해봅시다. 물론, 위에서 말했듯이 플러그인을 설치하는데 주의를 기울어야 합니다. 하지만 이 경우에는 언어로서 Vim 명령어를 사용할 수 있는 플러그인들에 대해서 이야기합니다. (Vim 핵심 기능을 방해하지 않는 플러그인) 아래의 플러그인들은 매우 유용합니다.

  • surround.vim 설치하기 (괄호, 따옴표 등의 쌍을 쉽게 수정)
  • commentary.vim 설치하기 (새로운 동사 명령어를 커맨드 라인에 추가합니다.)
  • repeat.vim 설치하기 ( 주요 플러그인을 위한 . 반복 지원)

(위 모든 플러그인들은 Vim을 배우는 과정에서 반드시 알게될 Tim Pope님이 만들었습니다.)

Pro tip: relative line number는 추천하지 않습니다. 이 기능이 처음 소개됐을 때 많은 사람들이 팬이 됐지만, 많은 사람들이 많은 이슈를 제기한 것을 들었습니다. (코드 가독성이 떨어지고, 가끔 성능 이슈가 있다 등) 그래서 저는 Ggg 명령어를 사용하여 같은 기능(특정 라인을 삭제하거나 이동하기)을 동작시킬 수 있기 때문에 개인적으로 relative line number를 사용하지 않습니다. (여기를 참고하세요.)

결론

Vim을 배우는 것은 많은 노력이 필요하지만, 많은 즐거움도 있습니다. 만약에 당신이 text editor를 배우는데 한 달이 소요된다는 사실에 반감이 든다면 위 계획들은 당신과 맞지 않습니다. 그러나 1주일 고생 끝에 서버 환경에서 직접 파일을 편집할 수 있는 능력을 얻을 수 있다면 대부분의 개발자들에게 이 조언들은 도움이 될 것입니다. VPS를 사용하여 iPad 또는 Chromebook에서 코드를 작성하는 놀라운 일도 할 수 있지요. 최소한 터미널에서 Vim이 열렸을 때 바보처럼 멍하니 앉아있지 않을 수 있습니다!

만약에 당신이 4주를 투자한다면 당신의 코드 작성 능력은 다른 차원의 수준이 될 수 있습니다. 하지만 솔직하게 말하자면 저는 Vim을 능숙하게 다루는 것이 당신을 조금 더 능률적으로 만든다고 생각하지 않습니다. (왜냐하면 Vim을 통해 아낀 시간을 멋진 기술과 새로운 구성을 시도하면서 코드를 작성하는데 사용할 것이기 때문입니다.) 다시 말해서, 이는 악기를 배우는 것과 비슷합니다. 성격에 따라서는 Vim을 배우는 과정을 몇 번이고 걷어차버릴 수 있습니다. 이 팁들이 당신이 Vim을 배우는데 도움이 되기를 바랍니다!

--

--