최근 Vim 플러그인을 찾다가 한국 분이 만든(걸로 추정되는) vim 패키지 관리 플러그인을 알게되었다.


Vundle ..  등등의 여러 패키지 관리 플러그인이 있지만 vim plug는 패키지 다운로드를 할 때 병렬로 처리하기 때문에 속도가 매우 빠르다고 한다.


플러그인을 직접 설치하게되면 디렉토리 이동 압축해제 등등 .. 그 뿐만이 아니라 다른 곳의 환경을 맞추려면 .vim 전체를 복사해서 날라야되고 거기다 플러그인 별로 업데이트를 한다고 하면.. 으악


손이 참 많이가는 귀찮은 문제였지만 이젠 이걸로 끝.



만드신 분은 최준군 이라는 분이시고 깃허브(https://github.com/junegunn/vim-plug) 를 통해 영어로된 자세한 설명이 기재되어있다.


자세히 보면 다른 플러그인을 개발하신 것도 있는데, 아직 많이 써보진 않았지만 goyo.vim 플러그인이 참 신기하다.


플러그인에 입문하는 분들은 어려울 수 있기 때문에 조금이나마 도움이 되고자 글을 써 본다.




설치 방법


우선 홈 디렉토리로 이동해서 .vim 디렉토리가 있는지 확인해본다. 


vim 플러그인을 설치해본 적이 없다면 .vim 디렉토리가 없다.


기존의 플러그인을 지우고 새로 설치하고 싶다고 하면 ~/.vim 디렉토리 전체를 삭제하고 진행해도 무관하다.


사실 .vim 디렉토리가 있어도 없어도 설치에 지장은 없다..ㅎ 기왕 설치하는 거 조금이라도 알고 진행하는 것이다.



이 명령어를 사용하면 .vim 디렉토리를 만들어줌과 동시에 vim-plug를 설치한다.


curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim


이후 차례대로 진행되어 ~/.vim/autoload 경로에 plug.vim 이 생성된다.





사용 방법


~/.vimrc 파일을 생성하여 다음과 같이 수정한다.



call plug#begin('~/.vim/plugged')

"이 사이에는 필요한 패키지를 입력


call plug#end()


이런 식으로 작성을 해서 저장 종료 후, 다시 vim을 열어서 :PlugInstall 을 입력하고 엔터를 치면 분할 창이 생기면서 설치가 진행된다.


패키지 검색을 위해 vimawesome.com 홈페이지를 들어가서 확인해보도록 하자.





매우 많은 종류의 패키지를 제공하고 있다.


들어가보면




이런식으로 vimPlug 설치 방법을 보여주는데


.vimrc 를 열어


call plug#begin('~/.vim/plugged')

Plug 'tpope/vim-surround'


call plug#end()



이런 식으로 입력 후 저장 종료 하고


다시 vim을 열어 :PlugInstall 을 입력하면 된다.




추가로 NERDtree 라는 플러그인 설치는 조금 다르다.

(NERDtree는 vim에서 인기가 가장 많은 필수 플러그인 중 하나로, 파일탐색기와 같은 기능을 한다.)


NERDtree 설치는 꼭 vim-plug 깃헙 페이지에 명시되어 있는 방법으로 설치를 진행하도록 하자.

(뭔진 모르겠는데 뒤에 옵션같은 것을 적어주지않으면 에러가 난다.)


Plug 'scrooloose/nerdtree', {'on' : 'NERDTreeToggle'}


airline은 vim의 테마를 바꿔주는 플러그인이다.



패키지별 설명 및 추천은 다음에 알아보도록 하고 우선은 필자의 설정을 올리도록 한다. 사실 이 글의 목적이기도 하다.


vim-plug 설치 방법을 다시금 확인.


curl -fLo ~/.vim/autoload/plug.vim --create-dirs \

    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim


" Plugins will be downloaded under the specified directory.

call plug#begin('~/.vim/plugged')


" Declare the list of plugins.

Plug 'tpope/vim-surround'

Plug 'vim-scripts/VisIncr'

Plug 'heavenshell/vim-jsdoc'


Plug 'junegunn/vim-easy-align'

Plug 'junegunn/goyo.vim'


Plug 'scrooloose/nerdtree', {'on' : 'NERDTreeToggle'}

Plug 'tpope/vim-repeat'

Plug 'kien/ctrlp.vim'


Plug 'vim-airline/vim-airline'

Plug 'vim-airline/vim-airline-themes'


Plug 'scrooloose/nerdcommenter'

" List ends here. Plugins become visible to Vim after this call.

call plug#end()


set tabstop=4                                   " The width of a TAB is set to 4.

                                        " Still it is a \t. It is just that

                                        " Vim will interpret it to be having

                                        " a width of 4.



set shiftwidth=4                        " Indents will have a width of 4


set softtabstop=4                       " Sets the number of columns for a TAB


set backspace=indent,eol,start  " allow backspacing over everything in insert mode


"set autoindent                                 " allow backspacing over everything in insert mode

"set nu


set noai nocin inde=


"set paste


syntax enable


" for vim-airline

let g:airline#extensions#enabled = 1 " turn on buffer list

let g:airline_theme='minimalist'

set laststatus=2 " turn on bottom bar


" Start interactive EasyAlign in visual mode (e.g. vipga)

xmap ga <Plug>(EasyAlign)


" Start interactive EasyAlign for a motion/text object (e.g. gaip)

nmap ga <Plug>(EasyAlign)


filetype plugin on


let mapleader=","

nmap <leader>n :NERDTreeToggle<cr>

set timeout timeoutlen=1500



let g:ctrlp_working_path_mode = 'ca'

let g:ctrlp_match_window = 'results:20'

"let g:ctrlp_user_command = 'ls -a %s'



2018/06/08 일자로 업데이트


** :set paste 설정을 해주면 복사붙여넣기가 쉬워집니다! 해제는 :set nopaste


2018/12/20 일자로 업데이트


** 자동 탭(autoindent)에 대한 처리 수정


http://vim.wikia.com/wiki/How_to_stop_auto_indenting





다음 챕터엔 플러그인 추천과 함께 사용법을 써보도록 하겠다.



순서 다시 정리


1. vim-plug 설치


curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim


2. 위 .vimrc 예시 파일 생성하기


3. vim 실행 후 :PlugInstall 입력해서 플러그인 설치

웹 개발을 해야겠다고 본격적으로 마음을 먹고 시작했을 초창기땐


서버 위에서 xshell + vim 을 사용했었다.


(단언컨데 xshell 은 세계 최고의 윈도우용 터미널 프로그램이다.)




당시 금융 SI 개발직에서 일 했었는데,


에디터라고 해봐야 비주얼 스튜디오 아니면 이클립스,


vim은 리눅스 기반 서버에서 어쩔 수 없이 사용하는 에디터로 인식하고 살았던 내게 vim을 쓰는 것은 고문이었다.


그나마 윈도우에서 xshell로 개발하니 vim을 사용하는데 금세 익숙해지기 시작했다.


왜냐하면 마우스도 먹히고, 쉽게 드래그해서 복사 붙여넣기도 할 수 있었으니까.




그러다 학교에서 배운 명령어들이 생각났고, vim 사용 tip을 검색하고 플러그인을 설치하기 시작했다.


회사가 내게는 맞지않아 금세 관뒀지만, 짧은시간 동안 많은 지식과 경험을 가지고 나왔다.




컴퓨터 무림계의 사파인 내게 vim은 정파 그 자체였다. 시간이 걸리지만, 차근차근 쌓이는 내공 같았다.


국내에선 웹개발 하는데 vim을? 미친놈 소리 듣기 쉬울거다.


외국에선 vim과 관련해 매뉴얼과 각종 플러그인, 꿀팁 등이 사이트 곳곳에 흩뿌려져 있다.



vim은 딱 아는 만큼 보인다. 어떻게 사용하느냐에 따라 숙련도, 사용도 차이가 엄청 날 것이다.


간단한 키 조작만으로도 즉석 매크로를 뚝딱 만들어버리기도 한다.



너무 vim에만 빠진게 아닌가 해서


notepad++, sublime, atom, vscode 등등 많은 에디터를 써봤다.

(참고로 윈도우용 vim이 있어 써봤지만 리눅스용 vim과는 사용목적, 환경이 엄연히 다르다. 윈도우용 vim을 쓸 바엔 차라리 다른 에디터를 쓰는게 낫다.)


notepad++ 은 설치도 쉽고 다양한 플러그인도 있고 괜찮은 에디터였지만 접근성이 좀 떨어졌다. 차라리 그냥 notepad 를 실행시키는게 낫지.


sublime은 sftp 기능을 쓰다 구입하라는 메세지가 귀찮아 접었고


atom 은 뭐.. Activate Power Mode 플러그인 때문에 설치했지만 이것도 역시 ;




그나마 최종 도착한게 vscode 에디터 였다.


다른 블로그 개발자분이 쓰는 걸 보고 써봤는데, 이건 좀 물건이었다.


다양한 플러그인에 터미널을 바로 밑에 창에 띄울 수도 있고, git commit 도 단축키 하나로 가능한 엄청난 에디터다.


vscode 에서 제공하는 vim 플러그인이 있었지만 완벽치는 않았다.




아무튼 결국엔.. 터미널 프로그램 + vim 이 최고라고 일깨워두고 싶다.


맥북에서는 현재 iterm2 + vim 으로 개발하고 있고


윈도우에서는 가능한 vscode 로 개발하려고 하고 있다.




vim 을 많이 쓰다보니 데스크탑 윈도우에서 vscode로 개발할 때,


마우스를 사용하는 것에 약간의 이질감을 느끼기도 하고 금세 손이 피로해지는 듯한 느낌이 든다.


아마 실무에선 에디터를 사용하는게 좋다는 여러 개발자의 의견이 있어 에디터에 적응하려는 것인데..


vim을 제외한 다른 에디터의 적응이 아직은 좀 힘들다.



리눅스에 너무 빠져서 그런걸까?



ps. 참고로 이젠 윈도우에서 bash 를 지원한다. 그렇게 되면 리눅스와 동일한 환경에서의 vim이 사용해진다.


가상환경이 아니라 로컬에서 직접.


필자는 셋팅해두었지만 미래를 위해 vscode를 좀 더 사용하기로 하고, 대신 기본 터미널은 bash를 설정하였다.