rcmdnk's blog
Last update

Amazon.co.jp: Dein Song in den Charts: Eine Schritt-für-Schritt-Anleitung vom eigenen Song zum Chart-Hit (German Edition) 電子書籍: Linus Goldenstein: Kindleストア

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

もうちょっと工夫して楽に管理できるようにしました。

追記ここまで

Sponsored Links
Sponsored Links

« Gmailではメールのタイトルの最初の[]の部分はスレッド表示で無視されるので注意 とくとくBBのWiMAXのキャッシュバックの連絡が来たので手続きを行った(のとRacoupon WiMAXの話) »

}