vim 설정
ubuntu 20.04에서 vim 설정하기
목표
목적은 다음과 같습니다. 아래와 같은 형태의 vim을 만든다.
리눅스 커널 코드 분석의 편의를 위해서는 vim 설정을 최적화할 필요가 있었습니다. vim 설정의 주요 사항은 3가지였습니다.
- ctags를 이용한 태그 검색
- tagbar를 이용한 태그 브라우징
- 그래픽 요소 설정
vim 설정
.vimrc 생성
.vimrc는 vim configuration 파일입니다. 우선 .vimrc를 만듭니다.
vi /etc/vim/.vimrc
처음 .vimrc를 만들면 빈 파일인 것을 확인할 수 있습니다. .vimrc에 플러그인과 설정을 추가하는 것으로 vim을 커스텀할 수 있습니다.
vi .vimrc
/etc/vim/vimrc 파일을 열어서 global vim configuration file을 새롭게 생성한 /etc/vim/.vimrc로 설정합니다.
vi /etc/vim/vimrc
vimrc 파일을 다음과 같이 수정합니다.
" Source a global configuration file if available
if filereadable("/etc/vim/.vimrc")
source /etc/vim/.vimrc
endif
Vundle
vim plugin을 관리하기 위한 툴이라고 할 수 있습니다. vundle을 사용하면 plugin 관리가 간단해지므로 vundle을 이용해서 세팅을 하겠습니다. 우선 vundle을 설치합니다.
git clone https://github.com/VundleVim/Vundle.vim.git /etc/vim/.vim/bundle/Vundle.vim
git clone이 완료되면 $ vi /etc/vim/.vimrc 로 .vimrc 파일을 열어줍니다.
.vimrc에 아래와 같이 적어줍니다.
set rtp+=/etc/vim/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
call vundle#end()
call vundle#begin() 과 call vundle#end() 사이에 plugin을 추가로 작성하여 vundle로 관리할 수 있습니다.
작성 후에는 저장 후 :PluginInstall을 vim 명령 모드에서 입력하여 plugin을 설치할 수 있습니다.
ctags
소스코드의 전역변수, 함수, 매크로의 데이터베이스를 생성해서 위치를 쉽게 찾을 수 있게 하는 것이 ctags의 역할입니다. 규모가 큰 프로젝트를 분석할 때 유용합니다.
ctags를 설치합니다.
$ sudo apt-get install exuberant-ctags
ctags를 vim에서 쉽게 쓸 수 있게 해주는 easytags 플러그인을 .vimrc에 추가합니다.
set rtp+=/etc/vim/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'xolox/vim-easytags'
Plugin 'xolox/vim-misc'
call vundle#end()
vim-misc는 easytags 플러그인 설치를 위해 필요한 플러그인이라서 함께 추가했습니다.
tagbar
tagbar는 현재 파일의 태그를 사이드바 형태로 간단하게 조회할 수 있게 해주는 플러그인입니다. plugin에 tagbar를 추가하는 것으로 간단하게 설치할 수 있습니다.
set rtp+=/etc/vim/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'xolox/vim-easytags'
Plugin 'xolox/vim-misc'
Plugin 'majutsushi/tagbar'
call vundle#end()
airline
vim의 탭과 status line의 디자인을 변경해주는 플러그인입니다. airline 또한 plugin에 추가해주는 것으로 설치할 수 있습니다.
set rtp+=/etc/vim/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'xolox/vim-easytags'
Plugin 'xolox/vim-misc'
Plugin 'vim-airline/vim-airline'
Plugin 'majutsushi/tagbar'
call vundle#end()
colorscheme
vim의 색상을 설정해주는 color scheme을 설치해줍니다. color scheme 중에서 gruvbox를 설치했습니다. 설치는 plugin에 추가하는 간단한 방법으로 할 수 있습니다.
set rtp+=/etc/vim/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'xolox/vim-easytags'
Plugin 'xolox/vim-misc'
Plugin 'morhetz/gruvbox'
Plugin 'vim-airline/vim-airline'
Plugin 'majutsushi/tagbar'
call vundle#end()
.vimrc 세팅
플러그인 외에도 추가적으로 세팅해야할 부분이 있습니다. 그 부분을 추가한 최종적인 .vimrc의 세팅 내용은 아래와 같습니다.
set rtp+=/etc/vim/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'xolox/vim-easytags'
Plugin 'xolox/vim-misc'
Plugin 'morhetz/gruvbox'
Plugin 'vim-airline/vim-airline'
Plugin 'majutsushi/tagbar'
call vundle#end()
set tag=./tags;/
set number
set tabstop=4
set ignorecase
set hlsearch
set fileencodings=utf-8,euc-kr
set bs=indent,eol,start
set ruler
set title
set showmatch
set nowrap
set wmnu
set cindent
syntax on
map <F8> :TagbarToggle<CR>
let g:gruvbox_contrast_dark="hard"
set background=dark
colorscheme gruvbox
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#fnamemod = ':t'
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline#extensions#tabline#buffer_nr_format = '%s:'
.vimrc 작성 이후 vim 명령 모드에서 :PluginInstall을 입력하여 plugin을 설치하는 단계가 필요합니다.
sudo로 vim 실행시 vimrc 설정이 적용되지 않는 경우
sudo로 vim 실행 후 vim 명령 모드에서 :PluginInstall을 입력하여 plugin을 설치하면 해결
리눅스 커널 코드 ctags DB 생성
ctags로 검색을 하기 위해선 코드에서 태그 DB를 만들어야 합니다. 리눅스 커널 make 파일에서 ctags DB 생성을 지원합니다.
$ make ARCH=x86_64 tags
ARCH에는 아키텍쳐를 입력하면 됩니다. tags가 완료되면 이제 vim의 내부에서 검색을 통해 태그 선언 위치를 찾을 수 있습니다.