ずーっとやってなかったのでやる。
neocomplete やめて deoplete にする
全然調べてなかったんだが、だいぶ前に neocomplete はもう開発停止してたらしい。現在は deoplete で開発が進んでるとのことだったので、そっちに切り替える。
https://github.com/Shougo/deoplete.nvim#install
を見ると nvim
があるかないかで挙動が変わるようだった。私は nvim
は使ってないのとパッケージマネージャーに Vundle.vim
を使っているので、
Plugin 'Shougo/deoplete.nvim' Plugin 'roxma/nvim-yarp' Plugin 'roxma/vim-hug-neovim-rpc'
と記載した。この後に :PluginInstall
を実行して、ほぼほぼプラグインは入ったんだが、一個だけエラーが出た。
pynvim を入れる
これだったら nvim
入れたほうが楽だったんじゃ…とちょっと思ったけど、まぁ仕方ない。
以下の記事に書かれている現象に私も当たった。
https://qiita.com/hisawa/items/f9fe94e7313bc40a087f
この人のようにシステムとvimで使っているPythonのバージョンが異なるようなことは発生しなかったが pip3 install pynvim
を実行しないとエラーが消えない状態になった。
Ubuntuの初期状態だと pip3
が入ってないので
$ sudo apt install python3-pip
で pip3
をインストールした後
$ pip3 install pynvim
で pynvim
をインストールした。これでエラーも無事消えた。
deoplete の設定
neocomplete で 使えた内容はほぼほぼ deoplete でも使えるので、全部修正すると以下のような差分になった。
autocmd VimEnter * execute 'NERDTree' -" https://github.com/Shougo/neocomplete.vim -Plugin 'Shougo/neocomplete.vim' - -" Use neocomplete. -let g:neocomplete#enable_at_startup = 1 -" Use smartcase. -let g:neocomplete#enable_smart_case = 1 - " Use underbar completion. -let g:neocomplete#enable_underbar_completion = 1 -" ユーザ定義の辞書を指定 -let g:neocomplete#sources#dictionary#dictionaries = { - \ 'default' : '', - \ 'scala' : $HOME . '/.vim/dict/scala.dict', - \ } +" https://github.com/Shougo/deoplete.nvim +Plugin 'Shougo/deoplete.nvim' +Plugin 'roxma/nvim-yarp' +Plugin 'roxma/vim-hug-neovim-rpc' + +" Use deoplete. +let g:deoplete#enable_at_startup = 1 " Plugin key-mappings. -inoremap <expr><C-g> neocomplete#undo_completion() -inoremap <expr><C-l> neocomplete#complete_common_string() +inoremap <expr><C-g> deoplete#undo_completion() +inoremap <expr><C-l> deoplete#complete_common_string() -" Recommended key-mappings. " <CR>: close popup and save indent. inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR> -function! s:my_cr_function() - return neocomplete#close_popup() . "\<CR>" +function! s:my_cr_function() abort + return deoplete#close_popup() . "\<CR>" endfunction " <TAB>: completion. inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" -" <C-h>, <BS>: close popup and delete backword char. -inoremap <expr><C-h> neocomplete#smart_close_popup()."\<C-h>" -inoremap <expr><BS> neocomplete#smart_close_popup()."\<C-h>" -inoremap <expr><C-y> neocomplete#close_popup() -inoremap <expr><C-e> neocomplete#cancel_popup() +" <C-h>, <BS>: close popup and delete backward char. +inoremap <expr><C-h> deoplete#smart_close_popup()."\<C-h>" +inoremap <expr><BS> deoplete#smart_close_popup()."\<C-h>" " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required +" Use smartcase +" I want to add this line next to deoplete#enable_at_startup, +" but I had an error 'Unknown function: deoplete#custom#option'. +" So, I call this at the end of file. +" Then I don't have the same error. +call deoplete#custom#option('smart_case', v:true)
call vundle#end()
はプラグイン読み込みの一番最後で良いってだけなので、 deoplete#custom#option
はその後に呼ぶことにした。
そうしないとプラグインが読み込まれてないのに deoplete#custom#option
を呼び出そうとするみたいで
E117: Unknown function: deoplete#custom#option
というエラーを吐いてしまう。
修正後の .vimrc
以下で見ることができる。
今の見た目はこんな感じ。
まだpowerlineが不完全なので、ちゃんとRicty入れるかデフォルトのでいい感じにできるのないか探す。