0. 시작하며
VIM은 역사와 전통의 훌륭한 도구다.
지금 VIM을 쓰는 사람들은 앞으로도 계속 VIM을 사용할 것이다. 1970년대 이후 많은 사람들이 그래온 것처럼.
* VI (브이아이, 1976~)와 VIM (빔, 1991~)은 사실상 같은 도구다. 굳이 구별할 필요 없다.
VIM은 어디서나 쓸 수 있다.
VIM이 없는 OS는 없다. 만약 VIM조차 없는 환경이라면 다른 어떤 도구도 사용할 수 없을 것이다. 그만큼 VIM은 요구사항이 낮다 (콘솔 입출력만 가능하면 된다). 최악의 환경에서도 VIM은 실행된다.
그리고 VIM은 익숙해지면 편하다.
이건 양날의 검인데, 최소한의 학습 장벽을 넘지 않으면 전혀 쓸 수 없다. VIM을 켜고 끄지 못해 당황했던 기억이 누구에게나 있을 것이다. VIM은 마우스가 없던 시절에 만들어진 도구다. 그리고 두손의 움직임을 최소화하는 것이 VIM의 철학이다. 그래서 일단 학습 장벽을 넘어 사용법이 손에 익숙해지면 다른 어떤 도구보다 적은 동작으로 많은 것을 할 수 있다 (다른 어떤 도구보다 생산성이 높다).
VIM 최초의 학습 장벽은 이 글로 넘자. 좋은 글을 멋지게 번역했다.
원글은 How To Learn Vim: A Four Week Plan
윗 글을 읽고, 일주일만 꾸준히 vimtutor를 수련해서, VIM에서
1) h,j,k,l 키 만으로 이동할 줄 알고,
2) 원하는 문자열을 찾고 바꿀 줄 안다면
최초의 문턱을 아주 훌륭하게 넘은 셈이다. 이 정도만 알아도 VIM의 생산성을 체감할 것이다.
이 글은
1) VIM에서 윈도를 분할하고 쓰는 법,
2) VIM에서 비주얼블록을 선택하고 쓰는 법,
3) VIM 플러그인을 검색하고 쓰는 법을 소개하려고 한다.
1. VIM 윈도
VIM은 가로/세로로 윈도를 나누어 쓸 수 있다. CTRL-w 가 윈도 기능을 부르는 핵심 키다.
* 윈도 세로 분할 - CTRL-w, v
* 윈도 가로 분할 - CTRL-w, s
* 윈도 이동 (다음 윈도로) - CTRL-w, w
* 윈도 이동 (h,j,k,l 방향으로) - CTRL-w, 방향키 [h | j | k | l]
* 윈도 닫기 - (명령줄에서) :q
VIM 윈도 기능 예시를 동영상으로 한땀한땀 캡쳐했다. 시나리오는 다음과 같다.
VIM 열기 -> CTRL-w, v 키입력으로 윈도 세로 나누기
-> :e FILENAME 명령으로 나뉘어진 윈도에서 새 파일 열기
-> CTRL-w, s 키입력으로 윈도 가로 나누기
-> :e FILENAME 명령으로 나뉘어진 윈도에서 새 파일 열기
-> CTRL-w, w 키입력으로 윈도 이동하기 (6번 반복)
-> CTRL-w, l 키입력으로 오른쪽 윈도로 이동하기
-> CTRL-w, h 키입력으로 왼쪽 윈도로 이동하기
-> CTRL-w, j 키입력으로 아래쪽 윈도로 이동하기
-> CTRL-w, k 윈도로 위쪽 윈도로 이동하기
-> :q 명령으로 윈도 닫기 (모든 윈도를 닫을 때까지 반복)
2. 비주얼 블록
비주얼 블록은 간단하지만 무척 유용한 기능이다. V (대문자 v) 가 Visual Block을 부르는 핵심키다.
* 라인 단위 블록 선택 - V (대문자 v) + 방향키 [j | k]
* 블록 해제 - ESC
블록을 선택한 상태에서 해당 블록만을 대상으로 문자열을 검색/치환할 수 있다.
예를 들어 (블록 밖에 있는 "abc"는 그대로 두고) 블록 안에 있는 "abc"를 "def"로 검색/치환하려면 블록을 선택한 상태에서 다음과 같이 입력한다.
(명령줄에서) :s/abc/def/g
블록을 선택한 상태에서 해당 블록을 대상으로 일괄 작업을 실행할 수 있다.
예를 들어 해당 블록 앞에 "//" 문자열을 삽입해서 블록을 c/c++ 주석문으로 변환하려면 다음과 같이 입력한다.
(명령줄에서) :norm i//
그러면 norm 뒤에 나열된 키 입력이 블록 안의 각 라인에 일괄 적용 된다. 이렇게 변환된 주석문을 다시 일반문으로 변환하려면 (각 라인 첫머리의 "//" 문자열을 제거하려면, 다시 블록을 정의하고 다음과 같이 입력한다.
(명령줄에서) :norm xx
역시나 비주얼 블록 기능 예시를 한땀한땀 캡쳐했다. 시나리오는 다음과 같다.
VIM 열기 -> 비주얼 블록 선택/해제하기 (3회 반복)
-> :s/a/b/g 명령으로 문자열 바꾸기
-> norm i// 명령으로 라인 첫머리에 "// " 문자열 넣기
-> u 키입력으로 작업취소하기 (2회 반복)
-> :q 명령으로 VIM 닫기
3. VIM 플러그인
새로운 개발 머신을 갖게 되면 자기만의 VIM 사용 환경을 새로 설정해야 한다. 이때 사용하는 것이 ~/.vimrc 설정 파일이다. 필자의 ~/.vimrc 파일을 샘플로 링크에 걸어 둔다. 참조가 되면 좋겠다. 여기서 특기할만한 것은 VIM 플러그인 매니저 Vundle 이다. Vundle 이외에 다른 플러그인 매니저들도 많다. 어떤 것을 쓸지는 취향의 문제다. 필자는 처음 만난 플러그인 매니저가 Vundle이어서 Vundle을 쓴다.
VimAwesome (https://vimawesome.com/)이라는 훌륭한 VIM 플러그인 검색 사이트가 있다. 이 사이트를 이용하면 원하는 VIM 플러그인을 찾을 수 있고 해당 플러그인의 설치/설정/사용 방법을 알 수 있다. VimAwesome 사이트는 (Vundle 포함) 모든 VIM 플러그인 매니저들을 위한 알맞은 설정 방법을 안내해준다.
VIM 만세!