Vimではプラグインを追加することによって簡単に機能を拡張出来ますが、
それらを沢山管理するためにはプラグイン管理用のプラグインを使うと便利です。
現在は
dein.vim
を使って管理していますが、
新しい環境では最初に全てのプラグインをインストールするためにちょっと起動するまでに時間がかかります。
またdotfilesは取り敢えず入れたいしVimの簡単な設定は入れたいけど
プラグインとか全部入れる必要が無いサーバーとかもあります。
そんな場合を考慮してdeinの設定を必要な場所でだけ有効に出来る様にしました。
deinを必要なときだけ有効にする
vimrc
の中ではdeinがインストールされてない場合、
自動でgitを使ってインストールし、プラグインの管理を開始する様にしています。
その最初の所でもしHOMEディレクトリに.vim_deinと言うファイルがない場合には
deinを使わない様にしました。
.vimrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| let s:use_dein = 0
if filereadable(expand("~/.vim_dein"))
let s:git = system("which git")
if strlen(s:git) == 0
let s:use_dein = 0
else
let s:use_dein = 1
endif
endif
let s:dein_enabled = 0
if s:use_dein && v:version >= 704
let s:dein_enabled = 1
" Set dein paths
let s:dein_dir = s:vimdir . '/dein'
let s:dein_github = s:dein_dir . '/repos/github.com'
let s:dein_repo_name = 'Shougo/dein.vim'
let s:dein_repo_dir = s:dein_github . '/' . s:dein_repo_name
" Check dein has been installed or not.
if !isdirectory(s:dein_repo_dir)
echo 'dein is not installed, install now '
let s:dein_repo = 'https://github.com/' . s:dein_repo_name
echo 'git clone ' . s:dein_repo . ' ' . s:dein_repo_dir
call system('git clone ' . s:dein_repo . ' ' . s:dein_repo_dir)
endif
let &runtimepath = &runtimepath . ',' . s:dein_repo_dir
" Check cache
if dein#load_state(s:dein_dir)
call dein#begin(s:dein_dir)
" dein
call dein#add('Shougo/dein.vim')
|
こんな感じです。
最初に
if filereadable(expand("~/.vim_dein"))
でファイルの存在をチェックしてフラグを切り替えて居るだけです。
逆に.vim_no_deinの様なファイルを用意してそれがある場合だけ
無効にしようかと思いましたが、
新しい環境にdotfilesをインストールして最初の設定を色々しようとする時に
ファイルをvimで書き換えようとしてdeinが走り出して面倒な事が多いので、
使いたくなったら使える様な設定にしました。
git
がインストールされる前だと無駄にエラーが毎回出るので
git
が使えるかどうかもチェックするようにしました。
ちょっと毎回チェックするには余計なオーバーヘッドがあるかな、と思いましたが、
プラグインを全てロードするのに比べれば無視できる位なので入れてあります。
追記: 2017/09/24
もうちょっと工夫して楽に管理できるようにしました。
追記ここまで