Managing Vim plugins using Vundle

Vim 에디터는 정말 강력한 개발도구이다. 처음 Vim을 사용하는 사람들에게는 어떻게 사용해야하는지 난감한 툴이지만 조금만 손에 익으면 다른 텍스트 에디터에서는 사용할 수 없는 고급 기능들을 사용해서 빠르게 코드를 작성할 수 있게 된다.

이렇게 Vim 이 강력한 이유는 무엇보다도 커스터마이징이 자유롭고 다양한 plugin 들을 사용할 수 있기 때문일 것이다. 물론 최근에 sublime text나 github의 atom 같은 텍스트 에디터가 멋진 plugin 들을 많이 제공하고 있지만 GUI(Graphic User Interface) 환경이 아닌 CLI(Command Line Interface)에서는 사용할 수 없다는 단점이 있다.

최근 Vim의 plugin을 관리해주는 다양한 툴들이 많이 개발되고 있다. 나는 이 중에서 Vundle을 자주 이용하는 편이다. 이 포스팅에서는 Vundle을 이용하는 법에 대해서 예제와 함께 간단히 작성해보려고 한다.


Install Vundle

  • 먼저 git clone 명령으로 ~/.vim/bundle 경로에 Vundle repository를 복사해놓는다. (물론 git이 설치되어 있어야 한다.)
$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
  • 그 다음에는 vimrc 파일을 수정해줄 차례다. vim ~./vimrc 커맨드로 vimrc 파일을 vim으로 열어준다.
  • 아래는 vundle git repository 에 올라와있는 튜토리얼이다. 일단은 먼저 아래 내용을 살펴보자.

set nocompatible " be iMproved, required
filetype off " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
Plugin 'L9'
" Git plugin not hosted on GitHub
Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Avoid a name conflict with L9
Plugin 'user/L9', {'name': 'newL9'}

" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList – lists configured plugins
" :PluginInstall – installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo – searches for foo; append `!` to refresh local cache
" :PluginClean – confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

먼저 Vundle을 잡아주고 그 밑에 Vundle로 설치할 Plugin들을 리스팅 해주고 있다. 번들도 Plugin의 일종이기 때문에 맨 처음에 Plugin 'VundleVim/Vundle.vim' 로 Vundle을 기입해준다. 이 예제에서는 그 밑에 Fugitive, L9 등의 Plugin을 리스팅하고 있는 것을 볼 수 있다.

우선은 Vundle만 먼저 설치해주자.

set nocompatible " be iMproved, required
filetype off " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList – lists configured plugins
" :PluginInstall – installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo – searches for foo; append `!` to refresh local cache
" :PluginClean – confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

  • vimrc 파일을 저장하고 나서 vim 커맨드 모드에서 :PluginInstall을 입력한다.

image1

  • Vundle Plugin이 설치되면 Done! 이라고 표시된다. (시간이 조금 걸릴 수도 있다.)

Plugin Install

  • 이제 본격적으로 Plugin들을 설치해보자. 앞에서 얼추 살펴보았듯이 설치할 Plugin들을 vimrc 파일에 리스팅 해주고 (그리고 나서 당연히 수정한 vimrc 파일을 :w 커맨드로 저장해주어야 한다. 위에서 처럼 :PluginInstall 를 입력해주면 Vundle이 알아서 Plugin들을 설치해준다. (참 편리하다!)

  • 설치할 Plugin들은 Vim Awesome 과 같은 웹에서 찾을 수 있다.

image2

  • 필자의 vimrc 파일은 다음과 같다.

set nocompatible " be iMproved,
filetype off " required

" set the runtime path to include Vundle and
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" The following are examples of different formats
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
Plugin 'functiontracker.vim'
Plugin 'The-NERD-Tree'
Plugin 'the-lambda-church/merlin'
Plugin 'bling/vim-airline'
Plugin 'OCamlPro/ocp-indent'
Plugin 'zhaocai/GoldenView.Vim'
Plugin 'airblade/vim-gitgutter'

" color scheme
Plugin 'tomasr/molokai'
" All of your Plugins must be added before the
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList – lists configured plugins
" :PluginInstall – installs plugins; append `!`
e
" :PluginSearch foo – searches for foo; append `!`
" :PluginClean – confirms removal of unused
ove removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

set autoindent
set smartindent
set cindent
set number
set shiftwidth=4
set tabstop=4
set laststatus=2
set hlsearch
set showcmd
set clipboard=unnamedplus

set t_Co=256

syntax on

if has("autocmd")
" When editing a file, always jump to the last
autocmd BufReadPost *
\ if line("'\"") > 0 && line
\ exe "normal g'\"" |
\ endif
endif

autocmd VimEnter * NERDTree
autocmd VimEnter * wincmd p

colorscheme molokai

Function Tracker, Nerd Tree, vim-airline, goldenvie, gitgutter 등의 Plugin과 Molokai 테마를 설치하여 사용하고 있다.

  • 설치할 Plugin들을 리스팅 한 다음에는 vimrc 파일을 저장하고 나서 vim 커맨드 모드에서 :PluginInstall 을 입력한다.

  • 설치가 완료되었다. 이제 설치되었는지 확인하기 위해서 vim을 열고 Plugin을 활성화 하는 커맨드를 입력한다. 예를 들어서 NERDTree의 경우에는 :NERDTreeToggle 을 입력해주어야 한다. 다음과 같이 나타나면 NERDTree 플러그인이 활성화 된 것이다.

image3

  • 팁으로 만약 NERD Tree를 이용할 때 항상 vim을 열었을때 기본으로 NERD Tree가 뜨도록 만들고 싶으면 필자의 vimrc에서 처럼 맨 밑에 아래 코드를 추가해준다.

if has("autocmd")
" When editing a file, always jump to the last
autocmd BufReadPost *
\ if line("'\"") > 0 && line
\ exe "normal g'\"" |
\ endif
endif

autocmd VimEnter * NERDTree
autocmd VimEnter * wincmd p

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s