Vim: YouCompleteMe(그리고 Vundle)를 사용한 자동완성기능 사용

** 2022.03.22
Vim 8.1/8.2 이상을 사용하고 있다면 각각 deoplete.nvim, 또는 ddc.vim 을 설치하는 편이 나을 수도 있다.


Vim 에서 자동완성은 Ctrl-n, Ctrl-p 로 되긴 한다는데, 좀 더 강력한(?) 기능을 자랑하는 YouCompleteMe를 사용해보기로 했다.

사용법은 홈페이지에 나와있긴 한데, 다소 전문가(?)용이라 조금 불친절한 면이 있다.
우분투에서, Vundle 을 사용한다는 가정하에 설치법을 정리해봤다.

Vundle 설치

Vim 용 Bundle(각종 플럭인 등등)을 간편하게 사용할 수 있게 해주는 Vundle. 이걸 먼저 설치해줘야만 한다.

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

설치 후엔 ~/.vimrc 를 편집해야 하는데, 기본값으로 다음이 필요하다.

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()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'ycm-core/YouCompleteMe'

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

여기서 Plugin 'ycm-core/YouCompleteMe'는 Github 주소다. 제대로된 주소는 github.com/ycm-core/YouCompleteMe 이지만, 여기서 github.com 을 떼고 뒷 부분을 넣어주면 된다.

따라서, 다른 플럭인들도 Github 주소만 알아낸 뒤 저 형식으로 추가해주면 된다.

위 작업을 끝냈다면, 다음 명령을 내려서 YCM 을 설치할 수 있는 기반을 만들어줘야 한다.

$ vim +PluginInstall +qall

이러면, ~/.vim/bundle/YouCompleteMe 에 파일이 생성된다.

YCM 설치

~/.vim/bundle/YouCompleteMe 로 이동하여, git 명령을 내려준다.

cd ~/.vim/bundle/YouCompleteMe
git submodule update --init --recursive

# 마지막으로, '설치' 명령 실행.
./install.py --all

끝. 이제 Vim 에서 자동 완성을 사용할 수 있다.

YCM 판올림, 또는 YCM 오류시 대처법

vim 을 실행하면, 화면 하단에 The ycmd server SHUT DOWN... 이런 오류가 발생할 때가 있다. 자세한 내용은 개발자 위키 문서를 참고하고..
내 문제는, ArchLinux 에서 Python 이 3.10.1 로 올라간데서 비롯됐다.

문제를 해결하려 재설치(install.py)하려 했더니, 이런 상황이 날 맞아줬다.

CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Python3: Found unsuitable version "3.10.1", required range
  is "3.6...3.10" (found /usr/bin/python3, found components: Interpreter
  Development Development.Module Development.Embed)

해결하려면, YCM 을 최신으로 유지하고, 다시 컴파일(설치)해주면 된다.

$ cd ~/.vim/bundle/YouCompleteMe
$ git pull --recurse-submodules origin master
$ ./install.py -all 
또는,
$ ./install.py

다만 확실하진 않은데, –recursive-submodule 을 하면, C 나 java 등도 자동완성할 수 있게 되는 모양이다.
따라서 install.py -all 시에 뭔가가 더 필요하다는 문구가 뜨게 된다. (오류!)

하여, Python 과 Shell 정도만 쓰려는 내게는, 그냥 install.py 면 충분했다.

Author: 아무도안

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