vimrc를 설정하는 것은 새로운 환경을 구축하는데 있어서 내가 가장 먼저 시작하는 일이다. 그만큼 오랜 시간동안 내가 필요한 것만 담아서 쓰고 있고, 매우 소중하다. 여러 플러그인도 추가하여 사용하고 있고 지금 내 상황에서는 가장 내 손에 익은 vimrc 설정이라고 할 수 있다.
먼저 Vim Vundle을 설치해야 Plugin을 설치할 수 있다.
git clone https://github.com/VundleVim/Vundle.vim.git
~/.vim/bundle/Vundle.vim
위 코드를 터미널에서 실행한 후에 .vimrc에서 call vundle#begin()
와 call vundle#end()
사이에 사용하고 싶은 플러그인을 적어주면 된다.
나의 경우에는 자주 사용하는 플러그인은 다음과 같다
'nanotech/jellybeans.vim' - https://github.com/nanotech/jellybeans.vim
'nathanaelkane/vim-indent-guides' - https://github.com/nathanaelkane/vim-indent-guides
'vim-airline/vim-airline' - https://github.com/vim-airline/vim-airline
'vim-airline/vim-airline-themes' - https://github.com/vim-airline/vim-airline-themes
차례대로
색상 설정,
띄어쓰기 칸 표시,
airline과 그 테마와 관련된 플러그인이다.
설정 법에 따라 vimrc에 적용 후 아래 그림과 같이 설치하면 정상적으로 작동된다.
그리고 Plug를 설치해야 한다. 설치 방법은 아래 명령어를 실행하면 설치 가능하다.
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
위 코드를 터미널에서 실행한 후에 .vimrc에서 call plug#begin(~/.vim/plugged)
와 call plug#end()
사이에 사용하고 싶은 플러그인을 적어주면 된다.
Plug에서 자주 사용하는 플러그인은 다음과 같다.
'junegunn/rainbow_parentheses.vim' - https://github.com/junegunn/rainbow_parentheses.vim
'raimondi/delimitmate' - 깃허브 찾을 수 없음
'neoclide/coc.nvim' - https://github.com/neoclide/coc.nvim
차례대로
괄호 색상 적용,
괄호 자동 완성
문장/단어 자동완성과 관련된 플러그인이다.
아래는 내가 직접 사용중인 .vimrc이다.
set ai
set ci
set cindent
set shiftwidth=4
set tabstop=4
set termguicolors
set ignorecase
set hlsearch
set nocompatible
set fileencodings=utf-8,euc-kr
set fencs=ucs-bom,utf-8,euc-kr
set bs=indent,eol,start
set ruler
set nu
set title
set showmatch
syntax on
filetype indent on
set mouse=a
set clipboard=unnamed
set rtp+=~/.vim/bundle/Vundle.vim
call plug#begin('~/.vim/plugged')
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'raimondi/delimitmate'
Plug 'junegunn/rainbow_parentheses.vim'
call plug#end()
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'chiel92/vim-autoformat'
Plugin 'scrooloose/nerdtree'
Plugin 'morhetz/gruvbox'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'nanotech/jellybeans.vim'
Plugin 'airblade/vim-gitgutter'
Plugin 'itchyny/vim-cursorword'
Plugin 'blueyed/vim-diminactive'
Plugin 'nathanaelkane/vim-indent-guides'
Plugin 'scrooloose/nerdcommenter'
Plugin 'fatih/vim-go'
call vundle#end()
filetype plugin indent on
"-----------------------------------------------------------------------"
" colorscheme
"-----------------------------------------------------------------------"
colorscheme jellybeans
set background=dark
let g:gruvbox_contrast_dark="hard"
let g:airline_theme='jellybeans'
"-----------------------------------------------------------------------"
" aiarline
"-----------------------------------------------------------------------"
set laststatus=2
let g:airline_section_y = ''
" Smarter tab line 활성화: 모든 파일 버퍼 출력
let g:airline#extensions#tabline#enabled=1
" Tab line 구분자 '|' 로 설정
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
" Tab line 에 파일명만 출력되도록 설정
let g:airline#extensions#tabline#formatter = 'unique_tail'
" Powerline-font 활성화
let g:airline_powerline_fonts = 1
" 다양한 구문 강조 그룹의 캐싱 활성화
let g:airline_highlighting_cache = 1
" 마지막 status창 사용 안함
let g:airline_section_warning=""
"-----------------------------------------------------------------------"
" indent guides
"-----------------------------------------------------------------------"
let g:indent_guides_start_level=2
let g:indent_guides_guide_size=1
au VimEnter * IndentGuidesEnable
"-----------------------------------------------------------------------"
" rainbow#pairs
"-----------------------------------------------------------------------"
hi MatchParen cterm=none ctermbg=green ctermfg=blue
let g:rainbow#max_level = 16
let g:rainbow#pairs = [['(', ')'], ['{', '}']]
augroup rainbow_lisp
autocmd!
autocmd FileType lisp,clojure,scheme RainbowParentheses
augroup END
"-----------------------------------------------------------------------"
" vimgutter
"-----------------------------------------------------------------------"
" Use fontawesome icons as signs
let g:gitgutter_sign_added = '+'
let g:gitgutter_sign_modified = '>'
let g:gitgutter_sign_removed = '-'
let g:gitgutter_sign_removed_first_line = '^'
let g:gitgutter_sign_modified_removed = '<'
set statusline+=%{GitStatus()}
function! GitStatus()
let [a,m,r] = GitGutterGetHunkSummary()
return printf('+%d ~%d -%d', a, m, r)
endfunction
set updatetime=250
nmap <ESC><ESC> :wq<CR>
nmap <F2> :NERDTreeToggle<CR>
nmap rrr :RainbowParentheses<CR>
noremap <F3> :Autoformat<CR>
아래는 직접 사용 중인 vim 화면이다.