vimからneovimに移行したのでそのときにしたこと
TL;DR
vimを使ってきましたがneovimのほうが良いと言われたのでこれを機にneovimに移行しました.
neovimは~/.config/nvim/init.vim
の設定が読み込まれるらしいので,肥大化しすぎていたvimrcをplugin管理用の.tomlと基本的な設定を記した.vimに分割して,init.vimではそれを読み込むだけのようにした.
また,dotfilesの構成もわかりやすいように改装してみました.
構成
以下のような感じにしてみた.
~/.dotfiles/vim ├─ init.vim # 各設定ファイルを読み込む.~/.config/nvim/init.vimにシンボリックリンクを貼る ├─ basic.vim # 基本的な設定 ├─ dein.vim # dein.vimを使うための処理を記載 ├─ appearance.vim # 見た目の設定 ├─ keymaps.vim # キーマップの設定 ├─ plugins # dein.vimでインストールされるプラグイン先 │ ├─ ... │ └─ ... ├─ toml # tomlファイル │ ├─ general.toml # dein.vimなど │ ├─ colorscheme.toml # colorschemeなど │ ├─ nerdtree.toml # NERDTree │ ├─ lightline.toml # lightline │ ├─ neovim.toml # deoplete.nvimとかそのあたり │ └─ completion.toml # deoplete-clangなど └─ scripts # 自分で作ったスクリプトなど
.tomlの設定
dein.vim
やdeoplete.nvim
などのプラグインはtomlファイルに記述するようにした.
[[plugins]] repo = 'Shougo/dein.vim' [[plugins]] repo = 'simeji/winresizer' hook_add = ''' let g:winrisizer_vert_resize=1 let g:winresizer_horiz_resize=1 ''' . . .
注意しないといけないことはpluginsをpluginと間違えないこと.
pluginと間違えてしまうと設定ファイル自体は読み込めてもプラグインが使えない状態に陥ってしまう.
.vimの設定
init.vimは以下のように.vimを呼び出すだけにした.
let s:base_dir = expand('~/.dotfiles/vim') " runtimepathに追加 execute 'set runtimepath+=' . fnamemodify(s:base_dir, ':p') runtime! basic.vim runtime! keymaps.vim runtime! dein.vim runtime! appearance.vim
dein.vimにはプラグインのdein.vimの設定で必要な処理が書いてある.
set nocompatible set encoding=utf-8 scriptencoding utf-8 filetype plugin indent off syntax off " Required: let g:python_host_prog = $PYENV_ROOT . '/versions/neovim2/bin/python' let g:python3_host_prog = $PYENV_ROOT . '/versions/neovim3/bin/python' let s:base_dir = expand('~/.dotfiles/vim') let s:dein_dir = s:base_dir . '/plugins' let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim' let s:toml_dir = s:base_dir . '/toml' if &runtimepath !~# '/dein.vim' if !isdirectory(s:dein_repo_dir) execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir endif execute 'set runtimepath^=' . fnamemodify(s:dein_repo_dir, ':p') endif " Required: if dein#load_state(s:dein_dir) call dein#begin(s:dein_dir) call dein#load_toml(s:toml_dir . '/general.toml', {'lazy':0}) call dein#load_toml(s:toml_dir . '/colorscheme.toml', {'lazy':0}) call dein#load_toml(s:toml_dir . '/nerdtree.toml', {'lazy':0}) call dein#load_toml(s:toml_dir . '/lightline.toml', {'lazy':0}) call dein#load_toml(s:toml_dir . '/neovim.toml', {'lazy':0}) call dein#load_toml(s:toml_dir . '/completion.toml', {'lazy':0}) if !has('nvim') call dein#add('roxma/nvim-yarp') call dein#add('roxma/vim-hug-neovim-rpc') endif call dein#end() call dein#save_state() endif " If there are the plugins that has not been installed on startup, " dein is checking and installing. if dein#check_install() call dein#install() endif " Required: filetype plugin indent on syntax on
もしもpythonをpyenv + virtualenvで環境の管理していた場合,以下のようにしてneovimのクライアントをインストールする.
$ pyenv install 2.7.15 $ pyenv virtualenv 2.7.15 neovim2 # 自分の場合デフォルトで3.7.1がインストールされているのでpython3.7.1の環境を作ることが出来る $ pyenv virtualenv neovim3 # python3.7の環境が欲しい場合は # $ pyenv install 3.7.0 # $ pyenv virtualenv 3.7.0 neovim3 # それぞれの環境にactivateしてneovimをインストール $ pyenv activate neovim2 $ pip install neovim $ pyenv activate neovim3 $ pip install neovim3 # !!それぞれの環境に応じたpythonのパスを調べる $ pyenv which python # ex) /home/hoge/.pyenv/versions/neovim2/bin/python # /home/hoge/.pyenv/versions/neovim3/bin/python
インストールが終了したらdein.vimにpythonのパスを適切に設定する.
let g:python_host_prog = $PYENV_ROOT . '/versions/neovim2/bin/python' let g:python3_host_prog = $PYENV_ROOT . '/versions/neovim3/bin/python'
こうしないと:checkhealth
で診断したときにpythonのproviderのところでErrorが出る.(deopleteとか使えなくなる?)
あとはシンボリックリンクを作ってやればneovimの設定が反映される.
$ ln -s ${HOME}/.dotfiles/vim/init.vim ${HOME}/.config/nvim/init.vim