2017年3月1日水曜日

YouCompleteMeをNeoVimでインストールしようとしたらハマった話.

さあさあ,寄ってらっしゃい,見てらっしゃい.
ここにかざってあるのは,機械学習のプログラムを作って実験したら,見事に成功して.
「やった!これで来月の研究発表会に離すことができたッ!」と喜び,さらに
「じゃあ,気分もいいし,久々にdein#update()して,プラグインたちをアップデートしてやるか」と深夜4時のテンションで深謀遠慮したあげく,それが悲劇のもととは知らずに意気揚々と突っ込んでいった若者の成れの果てでございます.


経緯をおって話すと
私はvimのプラグインたちをdein.vimで管理してる.
そのプラグインたちの中に,特にお世話になっているのが,補完用プラグインのYouCompeleteMeである.このオシャンティーにI love youと言っている名前のプラグインによって私は「プログラマーですけど?」と虚勢を張って要られるのである.しかし,このプラグイン,他のプラグインと違い,vimscriptに寄って書かれているわけではなくC++とその愉快な仲間であるboostによって書かれているので,インストールするためにはdein.vimに任せるわけには行かず.ダウンロードしてコンパイルする必要がある.
そのため,私のめんどくさがりも手伝って,なかなかプラグインをアップデートしないのであるが,昨日はなぜか判断を誤ってしまったのである.こんなことになった,責任者は誰か?断固として私ではない!!


しかし,昨日dein#update()をしたらYouCompleteMeが補完してくれなくなった.
vimで:YcmDiagsコマンドを打ったところ,
[Native filetype completion not supported for current file, cannot force recompilation.]
と返事が返ってきた.よくわからないにゃー.
C++が補完できないファイルタイプとは偉くなったものだなYCMよ.
散々インストールを繰り返した挙句.もうvimなんて知らない,neovimに行っちゃうんだから!!とおもむろにneovimに手を出したが,こちらでもYouCompleteMeは作動しなかった.
直し方が分かったのでここに載せておく.この解決方法はneovimのみならずvimでも役立つであろう.ちなみに,この方法は,vimのyoucompletemeの導入記事としても役立つよう書きました.

deinでプラグインを管理していると~/.vim以下にたくさんのディレクトリができるが
全消去.

$ pip3 install neovim
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:neovim-ppa/unstable
$ sudo apt-get update
$ sudo apt-get install neovim
$ mkdir -p ~/.config/nvim

neovimではvimrcのかわりにinit.vimを使用するので~/.bashrcに

export XDG_CONFIG_HOME="$HOME/.config/nvim"

を書き込んでおく.書き込んだ後,source ~/.bashrcを実行するのもわすれずに

ここでポイント!!!!
vimrcのdein.vimで管理しているプラグインの中でdein.vimとYouConpleteMeのプラグイン以外のプラグインを全部コメントアウトする.これは非常に重要である.どれくらい重要かというと...ちょっと想像できません.ご了承ください.

vimrcの中身を~/.config/nvim/init.vimに書き写す.
そのあと,deinをインストール

$ mkdir -p ~/.vim/dein/repos/github.com/Shougo/dein.vim
$ git clone https://github.com/Shougo/dein.vim.git ~/.vim/dein/repos/github.com/Shougo/dein.vim

そしてnvimをたちあげると,もしくは:call dein#install()すると
deinとyoucompeltemeがインストールされます.

あとは,YouCompleteMeをコンパイルするだけなので

$ cd .vim/dein.vim/repos/github.com/Valloric/YouCompleteMe/
$ ./install.py --clang-completer

とする.君のシステムにすでにあるclangを使わないように!
要求するバージョンはclang3.9以上なのだとある!

...最新(2017-03-01)じゃん.

これで,YouCompleteMeは復活し,私の威厳は保たれた.おしまい.


重要なところは,init.vimのなかのdeinとyoucompleteme以外のプラグインをコメントアウト
したことで,再インストールとか全消去とかは必要あるかどうかはわかりません.
コメントアウトだけで復活するかも知れません.

0 件のコメント:

コメントを投稿