カテゴリー
Linux

dein.vim でのプラグイン管理に toml ファイルを使うようにするまでの記録

参考ページ

toml ファイルを使う前の状態

" dein Scripts-----------------------------
if &compatible
  set nocompatible               " Be iMproved
endif

" プラグインのインストール先
let s:dein_dir = expand('~/.cache/dein')
" dein.vim 本体インストール先
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim' 

" dein.vim がなければ github から入手
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)

  " Let dein manage dein
  " Required:
  call dein#add('Shougo/dein.vim')

  " Add or remove your plugins here:
  call dein#add('w0rp/ale')
  call dein#add('qpkorr/vim-renamer')
  call dein#add('scrooloose/nerdtree')
  call dein#add('itchyny/lightline.vim')
  call dein#add('tpope/vim-fugitive')
  call dein#add('airblade/vim-gitgutter')
  call dein#add('ctrlpvim/ctrlp.vim')
  call dein#add('posva/vim-vue', { 'on_ft' : [ 'vue' ] })
  call dein#add('luochen1990/rainbow')

  " Required:
  call dein#end()
  call dein#save_state()
endif

" Required:
filetype plugin indent on
syntax enable

" If you want to install not installed plugins on startup.
if dein#check_install()
  call dein#install()
endif

" End dein Scripts-------------------------

toml ファイルを導入しただけの状態

.vimrc ファイルの差分です。

$ git diff .vimrc
diff --git a/.vimrc b/.vimrc
index 405f440..66d3286 100644
--- a/.vimrc
+++ b/.vimrc
@@ -29,15 +29,8 @@ if dein#load_state(s:dein_dir)
   call dein#add('Shougo/dein.vim')
 
   " Add or remove your plugins here:
-  call dein#add('w0rp/ale')
-  call dein#add('qpkorr/vim-renamer')
-  call dein#add('scrooloose/nerdtree')
-  call dein#add('itchyny/lightline.vim')
-  call dein#add('tpope/vim-fugitive')
-  call dein#add('airblade/vim-gitgutter')
-  call dein#add('ctrlpvim/ctrlp.vim')
-  call dein#add('posva/vim-vue', { 'on_ft' : [ 'vue' ] })
-  call dein#add('luochen1990/rainbow')
+  let s:toml_file = fnamemodify(expand('<sfile>'), ':h').'/dotfiles/dein.toml'
+  call dein#load_toml(s:toml_file)
 
   " Required:
   call dein#end()
$ 

追加した toml ファイルです。

[[plugins]]
repo = 'w0rp/ale'

[[plugins]]
repo = 'ctrlpvim/ctrlp.vim'

[[plugins]]
repo = 'itchyny/lightline.vim'

[[plugins]]
repo = 'luochen1990/rainbow'

[[plugins]]
repo = 'posva/vim-vue'
on_ft = 'vue'

[[plugins]]
repo = 'qpkorr/vim-renamer'

[[plugins]]
repo = 'scrooloose/nerdtree'

[[plugins]]
repo = 'tpope/vim-fugitive'

以上を行い、 ~/.cache を削除して Vim を起動したところ、無事 dein.vim によってプラグインがインストールされました。

良さそうです!

各プラグインの設定を、 toml ファイルの該当場所へと移す。

1 番簡単そうな、 rainbow Scripts

今まで、 .vimrc に let g:rainbow_active = 1 と書いてきただけのものです。これは、 toml ファイルに移動させやすそうです。

次のようになりました。

$ git diff HEAD^ HEAD 
diff --git a/.vimrc b/.vimrc
index 66d3286..87a86c0 100644
--- a/.vimrc
+++ b/.vimrc
@@ -66,10 +66,6 @@ let g:lightline = {
       \ }
 " End lightline Scripts--------------------
 
-" Start rainbow Scripts------------------
-let g:rainbow_active = 1 "0 if you want to enable it later via :RainbowToggle
-" End rainbow Scripts--------------------
-
 " 全角スペースを可視化
 " https://vim-jp.org/vim-users-jp/2009/07/12/Hack-40.html
 augroup highlightIdegraphicSpace
diff --git a/dein.toml b/dein.toml
index c06c3a5..df0c960 100644
--- a/dein.toml
+++ b/dein.toml
@@ -9,6 +9,7 @@ repo = 'itchyny/lightline.vim'
 
 [[plugins]]
 repo = 'luochen1990/rainbow'
+hook_add = 'let g:rainbow_active = 1'
 
 [[plugins]]
 repo = 'posva/vim-vue'
$

hook_add に、 .vimrc に書いていた変数の代入の文字列を入れるようにしました。これが、 hook_add がふさわしいのか、他のフックの方がふさわしいのか、わかりませんでした。。。

hook_source の方が、 Vim に優しいように思えます。

他の実例を見てみると、 hook_add でしたので、まずはこのフックとすることにしました。

次に、 itchyny/lightline.vim

修正内容は全く同様ですので、割愛いたします。こちらも実例をみると hook_add でしたので、こちらのフックを採用しました。

他に気がついたこと

dein.vim 作者の方の toml ファイルを見ました。

書き方は、コーディングスタイルは基本的にこれに合わせようと思いました。

  • hook_add = '''...''' と複数行に書く場合、その内容は冒頭インデントしない。

おわりに

.vimrc のそれぞれのプラグイン設定をまとめることができました。これは大きな収穫です♪

これで、プラグインの挙動に関する設定は、そのプラグインの定義部分周りを見て、いじればよくなりました。設定全部を見る必要は基本的になくなり、脳に優しくなりました♪

次は、 dein.vim の定義周りを、別ファイル等に移せないものか、、、もっとスッキリしたいのです。

以上です。

コメントを残す