vimからneovimへの移行
vimからneovimへの移行をしてみた。作業メモ。
インストール
$ brew install neovim/neovim/neovim
.zshrc に以下を追加
export XDG_CONFIG_HOME=$HOME/.config
既存のvimの設定からシムリンクを貼る
$ ln -snfv ${HOME}/.vim ${HOME}/.config/nvim /Users/m-morita/.config/nvim -> /Users/m-morita/.vim $ ln -snfv ${HOME}/.vimrc ${HOME}/.config/nvim/init.vim /Users/m-morita/.config/nvim/init.vim -> /Users/m-morita/.vimrc
起動してみる。なんかエラー出た。
$ nvim /Users/m-morita/.vim/init.vim の処理中にエラーが検出されました: 行 317: E518: 未知のオプションです: ttymouse=sgr You need vim compiled with Python 2.6, 2.7 or 3.2 and later support for Powerline to work. Please consult the documentation for more details. 続けるにはENTERを押すかコマンドを入力してください
どうやらneovimではデフォルトでマウスをサポートしてるのでttymouseオプションなくしたっぽい
https://neovim.io/doc/user/nvim.html
.vimrc を以下のように修正
if !has('nvim') " neovimではデフォルトでマウスサポートしているので不要 set ttymouse=sgr endif
あとPythonサポートがないと言ってる。
もともとPowerlineとか入れてた手元のPythonは2系だったんだけど、あとでneocompleteをdeopleteについでに変えようと思ってたのでPython3系を入れておく。
$ brew install python3 $ python3 --version Python 3.6.1 $ pip3 --version pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)
で、pip3でneovimを入れる
$ pip3 install neovim
$ nvim Traceback (most recent call last): File "<string>", line 4, in <module> ModuleNotFoundError: No module named 'powerline' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<string>", line 9, in <module> File "/Users/m-morita/.vim/bundle/powerline/powerline/vim.py", line 15, in <module> from powerline.bindings.vim import vim_get_func, vim_getvar, get_vim_encoding, python_to_vim File "/Users/m-morita/.vim/bundle/powerline/powerline/bindings/vim/__init__.py", line 44, in <module> vim_encoding = get_vim_encoding() File "/Users/m-morita/.vim/bundle/powerline/powerline/bindings/vim/__init__.py", line 25, in get_vim_encoding return vim.options['encoding'].decode('ascii') or 'ascii' AttributeError: 'str' object has no attribute 'decode' An error occurred while importing powerline module. This could be caused by invalid sys.path setting, or by an incompatible Python version (powerline requires Python 2.6, 2.7 or 3.2 and later to work). Please consult the troubleshooting section in the documentation for possible solutions. function provider#python3#Call の処理中にエラーが検出されました: 行 18: Traceback (most recent call last): File "<string>", line 53, in <module> File "<string>", line 40, in powerline_troubleshoot File "/Users/m-morita/.vim/bundle/powerline/powerline/lint/__init__.py", line 12, in <module> from powerline.segments.vim import vim_modes File "/Users/m-morita/.vim/bundle/powerline/powerline/segments/vim/__init__.py", line 16, in <module> from powerline.bindings.vim import (vim_get_func, getbufvar, vim_getbufoption, File "/Users/m-morita/.vim/bundle/powerline/powerline/bindings/vim/__init__.py", line 44, in <module> vim_encoding = get_vim_encoding() File "/Users/m-morita/.vim/bundle/powerline/powerline/bindings/vim/__init__.py", line 25, in get_vim_encoding return vim.options['encoding'].decode('ascii') or 'ascii' AttributeError: 'str' object has no attribute 'decode' 続けるにはENTERを押すかコマンドを入力してください
なんかpowerlineがエラーになるなぁ。
このエラー自体は単にモジュールが読み込まれていないだけっぽいけど、powerlineのissue眺めてたらそもそも現時点ではpowerlineはneovimに正式には対応してないっぽい(?)
https://github.com/powerline/powerline/issues/1287
上のissueでpowerlineじゃなくてairline使えって言われてる。
https://github.com/vim-airline/vim-airline
とりあえず無効化して先に進もう
" PowerLine if !has('nvim') NeoBundle 'alpaca-tc/alpaca_powertabline' NeoBundle 'Lokaltog/powerline', { 'rtp' : 'powerline/bindings/vim'} NeoBundle 'Lokaltog/powerline-fontpatcher' let g:Powerline_symbols = 'fancy' set laststatus=2 endif
稼働確認してみる。
neocompleteが動いてなさそう。これはあとでdeopleteに置き換える予定なのでいいや。
deopleteの導入
.vimrc に以下を追加
if has('nvim') NeoBundle 'Shougo/deoplete.nvim' let g:deoplete#enable_at_startup = 1 endif
nvimを起動
$ nvim
:NeoBundleRemotePlugins を実行。
:NeoBundleRemotePlugins
nvimを再起動すればOK。
補完は速くなった気がする。快適。
airlineの導入
.vimrc に以下を追記
if has('nvim') NeoBundle 'vim-airline/vim-airline' NeoBundle 'vim-airline/vim-airline-themes' let g:airline#extensions#tabline#enabled = 1 let g:airline_theme = 'distinguished' let g:airline_powerline_fonts = 1 set laststatus=2 endif
テーマはどれにするか悩んだけど、distinguishedにするとNormalモードでバッファに未保存の状態でステータスバーの色が変わるので、わかりやすくてよさげなのでこれにしてみた。