vim: vim-plug 을 사용한 ddc.vim 설치.

** 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},
      \ })

뭔지 알 듯, 말 듯.

Author: 아무도안

안녕하세요. 글 남겨주셔서 고맙습니다.