vimからneovimに移行したのでそのときにしたこと

公開日:2018-11-06
最終更新:2018-11-07

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.vimdeoplete.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
'''
          .
          .
          .
  1. 基本的には関連するプラグインを1つのファイルにまとめる
  2. 設定が大量にしてあるプラグインは個別にtomlを作る

注意しないといけないことは[[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
記事が少しでもいいなと思ったらクラップを送ってみよう!
18
+1
@mryyomutgaの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする