わすれっぽいきみえ

みらいのじぶんにやさしくしてやる

vimrcの更新

ずーっとやってなかったのでやる。

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

以下で見ることができる。

github.com

今の見た目はこんな感じ。 f:id:kimikimi714:20200316000320p:plain

まだpowerlineが不完全なので、ちゃんとRicty入れるかデフォルトのでいい感じにできるのないか探す。