今天對 vim 下了 :BundleUpdate 之後,打開 vim 一直提示:

The ycmd server SHUT DOWN (restart with :YcmRestartServer)

依造提示下了 :YcmRestartServer 依然提示一樣的錯誤訊息。

根據提示,看了一下 log:

~$ cat /tmp/optionfile561615396
YCM core library too old; PLEASE RECOMPILE by running the install.py script. See the documentation for more details.

記得上次編譯 YouCompleteMe 好像已經是大二時候的事情了,因此決定重新編譯:

~$ cd /home/ming/.vim/bundle/YouCompleteMe
~$ python3 install.py --clang-completer --go-completer

編譯過程,提示了新的錯誤:

ycm_core.so: undefined symbol: clang_getCompletionFixIt

yum-core/YouCompleteMe 有提到這個錯誤訊息,原因是 clang 版本太舊,8.0 以下版本的 clang 沒有支援 clang_getCompletionFixIt

~$ clang --version
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

在 Ubuntu 18.04 可以使用以下指令,安裝 clang 8 以及將系統預設的 clang 替換成 8.0:

~$ sudo apt update
~$ sudo apt install clang-8
~$ ~$ clang --version
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
~$ sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-8 1000 --slave /usr/bin/clang++ clang++ /usr/bin/clang++-8
~$ clang --version
clang version 8.0.0-3~ubuntu18.04.1 (tags/RELEASE_800/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

重新編譯 YCM 成功後啟動 vim 沒有提示錯誤訊息~