vim bundle

vim에서 플러그인을 쓰려면 원래는 ~/.vim/plugin, ~/.vim/autoload 같은 디렉터리 구조를 직접 이해하고, 저장소를 하나씩 git clone한 뒤 runtimepath까지 손으로 맞춰야 했다. 플러그인이 두세 개만 넘어가도 버전 관리, 업데이트, 제거 작업이 금방 번거로워진다. Vundle(‘Vim’과 ‘bundle’을 합친 이름)은 이 과정을 .vimrc 안의 선언 몇 줄과 vim 내장 명령어로 대체해주는 플러그인 매니저다. 이 글에서는 Vundle을 설치하고 .vimrc를 설정한 뒤, 플러그인을 추가·설치·업데이트·정리하는 과정을 정리한다.

Vundle이란

Vundle은 .vimrc에 Plugin '사용자/저장소' 형태로 원하는 플러그인을 선언해두면, vim 안에서 :PluginInstall 한 번으로 해당 저장소를 ~/.vim/bundle/ 아래에 clone하고 runtimepath와 help 태그까지 자동으로 등록해주는 도구다. GitHub 저장소뿐 아니라 vim-scripts.org에 등록된 이름, 로컬 경로도 같은 문법으로 다룰 수 있다. 요즘은 vim-plug나 Neovim의 lazy.nvim처럼 더 빠르고 기능이 많은 매니저로 옮겨가는 추세지만, 설정이 단순하고 동작 방식이 예측 가능해서 여전히 표준 vim 환경에서 무난하게 쓸 수 있는 선택지다.

설치

Vundle 자체도 git 저장소이므로, 관례적인 플러그인 설치 경로인 ~/.vim/bundle/ 아래에 clone하는 것으로 시작한다.

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

.vimrc 기본 설정

~/.vimrc 맨 위에 아래 보일러플레이트를 추가한다. Vundle을 초기화하고 runtimepath에 등록하는 필수 골격이다.

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'

" 여기에 원하는 플러그인을 추가한다

call vundle#end()            " required
filetype plugin indent on    " required

플러그인 추가와 관리 명령어

call vundle#begin()call vundle#end() 사이에 Plugin 선언을 추가하면 되는데, 출처에 따라 문법이 조금씩 다르다.

" GitHub 저장소
Plugin 'tpope/vim-fugitive'

" vim-scripts.org에 등록된 이름
Plugin 'L9'

" 로컬 경로
Plugin 'file:///home/user/path/to/plugin'

" 커스텀 runtimepath 지정
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}

" 이름이 겹칠 때 별칭 지정
Plugin 'ascenator/L9', {'name': 'newL9'}

플러그인을 선언한 뒤 실제로 설치·관리할 때 쓰는 명령어는 다음과 같다.

명령어기능
:PluginListvimrc에 선언된 플러그인 목록을 보여준다.
:PluginInstall새로 선언한 플러그인을 설치한다. 쉘에서 vim +PluginInstall +qall로 배치 실행도 가능하다.
:PluginUpdate이미 설치된 플러그인을 최신 버전으로 갱신한다.
:PluginSearch foo이름에 foo가 들어간 플러그인을 검색한다.
:PluginCleanvimrc에서 삭제한 플러그인의 잔여 파일을 정리한다.

실전 예시

git 상태를 vim 안에서 바로 다루는 vim-fugitive와, 파일 트리를 보여주는 NERDTree를 추가한다면 vimrc는 다음과 같이 바뀐다.

set nocompatible
filetype off

set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

Plugin 'VundleVim/Vundle.vim'
Plugin 'tpope/vim-fugitive'
Plugin 'preservim/nerdtree'

call vundle#end()
filetype plugin indent on

저장한 뒤 vim을 열고 :PluginInstall을 실행하면 두 플러그인이 ~/.vim/bundle/ 아래에 각각 clone되고 바로 쓸 수 있는 상태가 된다. 쉘에서 바로 배치로 설치하고 싶다면 다음 명령으로도 충분하다.

vim +PluginInstall +qall

주의사항

  • Plugin 선언은 반드시 call vundle#begin()call vundle#end() 사이에 있어야 하며, 그 바깥에 두면 무시된다.
  • 보일러플레이트의 filetype off → 플러그인 선언 → filetype plugin indent on 순서를 바꾸면 문법 하이라이팅이나 indent 설정이 꼬일 수 있으므로 순서를 그대로 지켜야 한다.
  • :PluginClean은 vimrc에서 지운 플러그인의 디렉터리를 실제로 삭제하므로, 실행 전에 :PluginList로 정말 지워도 되는 플러그인인지 한 번 더 확인하는 게 안전하다.

마무리

Vundle은 vim 플러그인 관리를 .vimrc 선언과 몇 개의 :Plugin* 명령으로 단순화해주는 도구다. vim-plug 같은 후발 매니저에 비해 병렬 설치 속도 등에서는 밀리지만, 설정이 직관적이고 git 외에 별도 의존성 없이 동작해서 가볍게 vim 환경을 구성할 때는 여전히 실용적인 선택이다.

참고

답글 남기기