参考ページ
- Vim script を試すのに役立った。
- dein.vim で toml ファイル管理の方法を知るのに役立った。
- dein.vim のフックについて概要を知ることができた。
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 ファイルです。
dein#add('Shougo/dein.vim')
->repo = 'Shougo/dein.vim'
と書けば良い。dein#add('posva/vim-vue', { 'on_ft' : [ 'vue' ] })
のように、第 2 引数がある場合は、 2 行目以降に追記すれば良さそう。この例で言えば、{ 'on_ft' : [ 'vue' ] }
はon_ft = 'vue'
となる。
[[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 でしたので、まずはこのフックとすることにしました。
- dotfiles/dein_misc.toml at master · t-msn/dotfiles
- dotfiles/dein.toml at master · virusbb001/dotfiles · GitHub
次に、 itchyny/lightline.vim
修正内容は全く同様ですので、割愛いたします。こちらも実例をみると hook_add でしたので、こちらのフックを採用しました。
他に気がついたこと
dein.vim 作者の方の toml ファイルを見ました。
書き方は、コーディングスタイルは基本的にこれに合わせようと思いました。
hook_add = '''...'''
と複数行に書く場合、その内容は冒頭インデントしない。
おわりに
.vimrc のそれぞれのプラグイン設定をまとめることができました。これは大きな収穫です♪
これで、プラグインの挙動に関する設定は、そのプラグインの定義部分周りを見て、いじればよくなりました。設定全部を見る必要は基本的になくなり、脳に優しくなりました♪
次は、 dein.vim の定義周りを、別ファイル等に移せないものか、、、もっとスッキリしたいのです。
以上です。