** 2023.04.19 수정
ddc.vim 은, YouCompleteMe, deoplete.nvim 와 비슷한 역할을 하는, vim 용 자동 완성 지원 프로그램이다.
간단하게 설치법만 정리한다.
아주 짧게 써봤지만, deoplete.nvim 보다 반응이 좀 빠른 듯 하다. Python 프로그램(msgpack pynvim) 설치도 필요없고.
다만! 이 plugin 을 쓰려면 deno 가 필요한데, 이건 22년 9월 현재 linux arm 계열은 지원하지 않는다. (macOS 용은 arm 도 지원한다.)
Vim-Plug 설치
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
이러면 ~/.vim/autoload/plug.vim
이란 파일이 생긴다. 이걸로 vim-plug 설치는 끝이다.
보다 자세한 설명은 Tutorial 참고.
Deno 설치
ddc.vim 이 제대로 작동하기 위해선 Deno 라는 프로그램이 필요하다. 먼저 설치해준다. Linux(x64) 나 macOS(Intel/Arm)나 명령은 동일하다. 단, macOS 는 Homebrew 로 설치할 수도 있다.
curl -fsSL https://deno.land/install.sh | sh
이러면 ~/.deno/bin/
에 실행파일이 설치된다. 그런데, 여기는 실행경로가 잡혀 있지 않으므로, Deno 쪽에선 이 경로를 추가하라고 한다.
그러나, 굳이 그럴 필요없이 ~/bin
또는 ~/.local/bin 등, 사용자 환경에 있는 실행 경로에 심볼릭링크를 만드는 편이 나을 수도 있다. 또는 Alias 에 추가해도 되겠다.
# Link ln -s ~/.deno/bin/deno ~/.local/bin # Alias alias deno="$HOME/.deno/bin/deno
Deno 는, 나중에 판올림도 아주 쉽게 할 수 있다.
deno upgrade
ddc.vim 설치/설정 (.vimrc 편집)
.vimrc 를 열고, 다음 내용을 넣는다.
call plug#begin() " 설치 Plug 'Shougo/ddc.vim' Plug 'vim-denops/denops.vim' " Install your UIs Plug 'Shougo/ddc-ui-native' " Install your sources Plug 'Shougo/ddc-source-around' " Install your filters Plug 'Shougo/ddc-matcher_head' Plug 'Shougo/ddc-sorter_rank' " List ends here. Plugins become visible to Vim after this call. call plug#end() " 설정 " https://github.com/Shougo/ddc-around " You must set the default ui. " Note: native ui " https://github.com/Shougo/ddc-ui-native call ddc#custom#patch_global('ui', 'native') " Use around source. " https://github.com/Shougo/ddc-source-around call ddc#custom#patch_global('sources', ['around']) " Use matcher_head and sorter_rank. call ddc#custom#patch_global('sourceOptions', { \ '_': { \ 'matchers': ['matcher_head'], \ 'sorters': ['sorter_rank']}, \ }) " Change source options call ddc#custom#patch_global('sourceOptions', { \ 'around': {'mark': 'A'}, \ }) call ddc#custom#patch_global('sourceParams', { \ 'around': {'maxSize': 500}, \ }) " Mappings " <TAB>: completion. inoremap <silent><expr> <TAB> \ pumvisible() ? '<C-n>' : \ (col('.') <= 1 <Bar><Bar> getline('.')[col('.') - 2] =~# '\s') ? \ '<TAB>' : ddc#map#manual_complete() " <S-TAB>: completion back. inoremap <expr><S-TAB> pumvisible() ? '<C-p>' : '<C-h>' " Use ddc. call ddc#enable()
이렇게 넣고, vim
을 실행하면 오류가 발생한다. 원래는 Plugin 을 먼저 설치한 뒤(vim-plug begin ~ end 까지 내용)에 그 아래에 있는 call 내용을 넣어야 하는데, 여기선 그냥 한꺼번에 넣어줬기 때문이다. ddc.vim 안내 페이지엔 이렇게 하라고 나와있긴 하다.
그러나, 오류가 나도 그냥 무시하고 진행해도 된다.
아무튼, 저렇게 넣고, vim
을 실행한 뒤, 다음 명령으로 플럭인을 설치한다.
:PlugInstall
추가. 언어별 설정?
C 를 사용하지 않아서, 원래 권고 설정에 있던 다음 내용은 빼버렸다.
" Customize settings on a filetype call ddc#custom#patch_filetype(['c', 'cpp'], 'sources', ['around', 'clangd']) call ddc#custom#patch_filetype(['c', 'cpp'], 'sourceOptions', { \ 'clangd': {'mark': 'C'}, \ }) call ddc#custom#patch_filetype('markdown', 'sourceParams', { \ 'around': {'maxSize': 100}, \ })
뭔지 알 듯, 말 듯.