dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

Vim & NeoBundleからNeovim & dein.vimに乗り換える

遅ればせながら vim から Neovim へ、プラグイン管理は NeoBundle から dein.vim へ乗り換えてみた。
ほとんどこちらの記事の通りに進めればできました。


Neovim のインストール

$ brew install neovim/neovim/neovim

インストールが完了すると、ターミナルで nvim というコマンドで Neovim が起動できるようになる。

.zshrcエイリアスを設定して、vim で起動できるようにしておく。

alias vim='nvim'


パスの設定

Neovim の設定ファイルは ~/.vimrc でなく ~/.config/nvim/init.vim になったらしい。
.zshrc に以下を記述する。

export XDG_CONFIG_HOME=~/.config


dein.vim のインストール

インストールスクリプトをダウンロードしてきて実行する。

$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ mkdir -p ~/.config/nvim/dein
$ sh installer.sh ~/.config/nvim/dein

dein ディレクトリ内に dein/repos/github.com/Shougo/dein.vim/... というようにファイルが生成される。


init.vim の作成

~/.config/nvim ディレクトリに init.vim という名前のファイルを作成する。

元々 NeoBundle 用の設定をこのように書いていた。

if &compatible
   set nocompatible               " Be iMproved
endif

" Required:
set runtimepath^=~/.vim/bundle/neobundle.vim/

" Required:
call neobundle#begin(expand('~/.vim/bundle/'))

" Let NeoBundle manage NeoBundle
" Required
NeoBundleFetch 'Shougo/neobundle.vim'

" My Bundles here:
" Refer to |:NeoBundle-examples|.
" Note: You don't set neobundle setting in .gvimrc!

NeoBundle 'Shougo/vimproc.vim', {
\ 'build' : {
\     'windows' : 'tools\\update-dll-mingw',
\     'cygwin' : 'make -f make_cygwin.mak',
\     'mac' : 'make',
\     'linux' : 'make',
\     'unix' : 'gmake',
\    },
\ }

" `NeoBundle XXX` でインストールしたいプラグインを記述

call neobundle#end()

init.vim では以下のようにする。

" この2行は必要なのかよくわかっていない
set runtimepath+=~/.config/nvim
runtime! userautoload/*.vim

if &compatible
  set nocompatible
endif
set runtimepath+=~/.config/nvim/dein/repos/github.com/Shougo/dein.vim

call dein#begin(expand('~/.vim/dein'))

call dein#add('Shougo/dein.vim')
call dein#add('Shougo/vimproc.vim', {
    \ 'build': {
    \     'windows': 'tools\\update-dll-mingw',
    \     'cygwin': 'make -f make_cygwin.mak',
    \     'mac': 'make -f make_mac.mak',
    \     'linux': 'make',
    \     'unix': 'gmake',
    \    },
    \ })

" `call dein#add('XXX')` でインストールしたいプラグインを記述

call dein#end()

NeoBundle foo/barcall dein#add('foo/bar') に変わった、ということを覚えておけば
プラグインの追加は今まで通り簡単に行えそう。


プラグインのインストール

Neovim を起動した後、

:call dein#install()

でインストールする。


vimから移行した時の注意点

ウィンドウの移動のために以下のようなキーバインドを設定している場合。

" CTRL-hjklでウィンドウ移動
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
nnoremap <C-h> <C-w>h

<C-h> (Ctrl + h) のみ、Neovim ではうまく動作しないらしい。
こちらを参考にする。

Vim to Neovim - Qiita

" CTRL-hjklでウィンドウ移動
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
nnoremap <C-h> <C-w>h
if has('nvim')
  nmap <BS> <C-W>h
endif

を追加してあげるとうまく動いた。

まだちょっとしか触っていないけど動作が軽快な感じ。