1
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Vimをより暗黒パワーに染めるべくdein.vimに端末固有のプラグインをロードさせるようにするメモ

はじめに

昨日Vimを暗黒パワーに染めるべくdein.vimを導入してみたメモに書いた通り、プラグインマネージャーをpathogenからdein.vimに乗り換えた。
pathogenの場合は~/.vim/bundle内にgitに管理させない状態で端末固有のプラグインを放り込んでおけばそれぞれ読み込んでくれたが、dein.vimの場合はdein#add()dein#local()dein#load_toml()で明示的に読み込む必要がある。
私のやり方では~/.vimrcは全端末共有の設定を書き、~/.vimrc.localに各端末固有の設定を書くようにしているのだが、dein.vimはプラグインのロードを一箇所のdein#begin()ブロック内に書かなければならないため、端末固有のプラグインのロードも~/.vimrcに書く必要があった。

そこで、TOMLファイルを全端末共通のものと各端末固有のものの2種類準備し、全端末共通のものだけgit管理下に置いて共有するようにした。

設定

" use dein.vim
if &compatible
  set nocompatible
endif

augroup MyAutoCmd
  autocmd!
augroup END

let s:dein_dir = $HOME . '/.vim/dein'
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
let &rtp = &rtp .",". s:dein_repo_dir

if !exists('g:dein_toml_list')
  let g:dein_toml_list = []
endif
let g:dein_toml_list += [s:dein_dir . '/config.toml', s:dein_dir . '/config_local.toml']

if dein#load_state(s:dein_dir)
  call dein#begin(s:dein_dir)
  for toml in g:dein_toml_list
    if filereadable(toml)
      call dein#load_toml(toml)
    endif
  endfor
  call dein#end()
  call dein#save_state()

  if dein#check_install()
    call dein#install()
  endif
endif

silent! execute 'helptags' s:dein_repo_dir . '/doc/'

g:dein_toml_listというリストを準備し、そこに読み込ませるTOMLファイルをひたすら追加していく。
その後それぞれファイルが存在し読み込むことが出来ればdein#load_toml()で読み込むようにした。
dein#begin()の第二引数に監視対象のファイルを指定するようにしているため、こちらにも端末固有のTOMLファイルを追加するようにする。
2016/10/31 Update Shougo氏からご指摘いただき、dein#begin()の第二引数を削除(コメント参照)

あとは端末固有のTOMLファイル(私の例では~/.vim/dein/config_local.toml)にそれぞれの端末でのみ使いたいプラグインを列挙しておけば良い。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?