본격 vim editor customizing

2020. 5. 3. 22:04개발환경

 서론 

vim은 에디터로 가장 유명한 vscode와 같은 에디터입니다. 이번 포스팅을 통해 안그래도 강력한 vim editor를 IDE처럼 사용할 수 있도록 customizing을 해보겠습니다.

 

vim은 너무나도 편리하고 유용하다고 잘 알려져있기 때문에 이에대한 플러그인들이 많이 존재합니다. 또한 미리 많이 사용하는 플러그인들을 모아서 구성해 놓은 neo vim이나 space vim 등이 존재하기 때문에 단순히 패키지 설치를 통해 다양한 플러그인들이 설치되어진 vim을 빠르게 사용할 수 있습니다. 그러나 앞서 말한 vim 패키지를 필자가 사용해본 결과 사용하지않는 플러그인들이 설치되어 있어서 다소 무거운 느낌을 받았습니다. 또한 키 맵핑이 그 vim 패키지 메뉴얼에 따라 약간의 변화가 있어서 직접 customizing을 해보기로 했습니다. 

 

 본론 

vim에 플러그인을 설치하기 위한 플러그인 관리 방식이 있습니다. 보통 'Vundle'이 많이 사용되어지고,  'vim-plug'등이 사용되어집니다. 어떠한 패키지를 사용하건 플러그인들이 나열되어져 있는 Awesom vim에서 플러그인들을 골라서 사용할 수 있습니다.

 

1. 플러그인을 위한 패키지 설치

 

" Vim-Plug 사용하기

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

 

curl 명령어를 통해 설치할 수 있습니다. 그리고 .vimrc에서 플러그인들을 관리하기 위한 기본 패키지가 있습니다.

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

call plug#end()

위 begin과 end 사이에 Plugin들이 들어가게 됩니다.

 

github : vim-plug

 

" Vundle 사용하기

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

마찬가지로 플러그인을 관리하기 위한 패키지를 설치합니다. 그리고 'vim-plug'와 마찬가지로 begin()과 end사이에 플러그인들이 들어가게 되는데, 추가적으로 필요한 작업들이 있습니다.

 

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()

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

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

 

github : Vundle

 

설치 할 플러그인을 작성한 후 :

vim-plug : 

  • :PlugInstall - 플러그인 설치
  • :PlugClean - 플러그인 삭제 (목록 삭제 후 명령어 기입)

Vundle :

  • :PluginInstall - 플러그인 설치
  • :PluginClean - 플러그인 삭제 (목록 삭제 후 명령어 기입)

 

2. 본격 플러그인 설치

 

" IDE처럼 사용할 수 있는 NERDTREE

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

" plus
Plugin 'scrooloose/nerdtree'

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

 

vim nerdtree

위 플러그인 기입 후 :source % :PluginInstall 을 차례대로 입력하면 왼쪽 파일 목록을 다음과 같이 확인 할 수 있습니다. 위 스크린샷과는 조금 다른 모습을 확인 할 수 있는데, 이 포스트를 끝까지 보신다면 위와 비슷한 형태지만 본인과 맞게  customizing 할 수 있을것입니다.

 

창을 키고 끌때는 :NERDTreeToggle 를 통해서 키고 끌 수 있습니다. 더욱 편리하게 사용하기 위해 자신이 원하는 키에 mapping 하여 사용하면 되겠습니다. 저 같은 경우에는 <F3> 키에 매핑하여 사용하고 있습니다.

 

map  :NERDTreeToggle

 

github : NERDTree

Awesome vim : NERDTree

 

 

" 현재 상태를 멋지게 확인 할 수 있는 vim-airline

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

" plus
Plugin 'scrooloose/nerdtree'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'

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

 

이번에는 두가지 플러그인을 설치했는데, 테마를 고르기 위해서 입니다. 위 플러그인을 통해서 상태창을 멋지게 꾸미는것 뿐만아니라 추가적인 플러그인을 통해 git과 연동 및 더욱 강력한 상태를 확인 할 수있습니다.

 

 

아래 상태창, 그리고 추가적으로 위에 현재 실행중인 파일의 경로를 보여줄수도 있습니다.

 

 

" airline
let g:airline#extensions#tabline#enabled = 1
let g:airline_powerline_fonts = 1
"let g:airline#extensions#tabline#formatter = 'unique_tail'
let g:airline_theme= 'tomorrow'

위와 같은 상태창을 추가 할 수 있습니다. 

 

그리고 :bn을 이용해서 nerdTree를 통해 이동한 후 되돌아 올 수 있고, :tabnew를 통해서 새로운 탭을 만들수도 있습니다. 저는 아래와 같이 매핑하여 사용중입니다.

 

map <F5> :tabnew<CR>
map <F4> :bn<CR>

 

github : vim-airline  vim-airline-themes

Awesome vim

 

" 파일 아이콘 추가하기

 

이번 항목은 폰트를 추가하는 것으로 파일 아이콘을 추가하지 않는다고 하더라도 vim-airline을 원할하게 사용하기 위해서는 폰트를 변경해야 하므로 겸사겸사 추가하였습니다.

 

Plugin 'Raimondi/delimitMate'

 

위 플러그인 을 설치하고 폰트를 Nerd font로 바꾸어 주겠습니다. 그럼 위에서 플러그인을 설치해도 폰트가 깨지던것을 해결할 수 있고, 추가적으로 파일 아이콘이 추가된것을 확인 할 수있습니다.

 

 

github : vim-devicons

Awesome vim : vim-devicons

 

 

" Syntax highlighting & Syntax checking 

 

저는 커피스크립트와 젤리빈을 이용해서 문법 강조를 사용하고 있습니다. Awesome vim 에서 원하는 테마를 찾아서 이용할 수 있습니다.

 

Plugin 'scrooloose/syntastic
Plugin 'kchmck/vim-coffee-script'
Plugin 'nanotech/jellybeans.vim'

 

syntax on
color jellybeans

 

syntastic : syntax checking

 

vim-coffee-script : syntax highlighting

 

jellybeans : font-themes

 

" 추가 플러그인들을 Awesome vim에서 찾아 customizing 하기

 

많은 사람들이 원하는 자동완성 기능은 대표적으로

 

youcompleteme

ale

coc.nvim

 

등이 있습니다. 그리고 자동완성을 customizing 하는 

 

ultisnips

 

(https://gist.github.com/mutewinter/825f44bfd3aa810088ea5de2f61bad63)

 

도 활용한다면 강력하게 vim을 이용할 수 있습니다.

 

 

3. 나의 vimrc

 

set nocompatible 		" be improved, required
filetype off

map <F3> <ESC>:NERDTreeToggle<CR>
map <F5> :tabnew<CR>
map <F4> :bn<CR>

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

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

" plus
Plugin 'scrooloose/nerdtree'
Plugin 'tpope/vim-fugitive'
Plugin 'scrooloose/syntastic'
Plugin 'ctrlpvim/ctrlp.vim'
Plugin 'nanotech/jellybeans.vim'
Plugin 'kchmck/vim-coffee-script'
Plugin 'Raimondi/delimitMate'
Plugin 'ryanoasis/vim-devicons'
Plugin 'jeffkreeftmeijer/vim-numbertoggle'

Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'airblade/vim-gitgutter'
Plugin 'edkolev/tmuxline.vim'

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


" airline
let g:airline#extensions#tabline#enabled = 1
let g:airline_powerline_fonts = 1
"let g:airline#extensions#tabline#formatter = 'unique_tail'
let g:airline_theme= 'tomorrow'


" 파일 찾을 때 무시할 것들
let g:ctrlp_custom_ignore = {
  \ 'dir':  '\.git$\|public$\|log$\|tmp$\|vendor$',
  \ 'file': '\v\.(exe|so|dll)$'
\ }

" 마지막으로 수정된 곳에 커서를 위치함
if has("autocmd")
	au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "norm g`\"" | endif
endif

let g:gitgutter_max_signs = 500  " default value

" turn hybrid line numbers on
set number relativenumber
set nu rnu

syntax on
color jellybeans
set hlsearch " 검색어 하이라이팅
set autoindent " 자동 들여쓰기

set autowrite " 다른 파일로 넘어갈 때 자동 저장
set autoread " 작업 중인 파일 외부에서 변경됬을 경우 자동으로 불러옴
set scrolloff=6
set cindent " C언어 자동 들여쓰기
set history=256
set laststatus=2 " 상태바 표시 항상
set shiftwidth=3 " 자동 들여쓰기 너비 설정
set showmatch " 일치하는 괄호 하이라이팅
set smartcase " 검색시 대소문자 구별

set smarttab
set smartindent
set softtabstop=3
set tabstop=3
set incsearch

 

'개발환경' 카테고리의 다른 글

Windows환경에서 Git 설치하기  (0) 2020.05.18