Vimのプラグインは
dein.vim
を使って管理していますがVim 7.4は現状サポートされていません。
ただしCentOS 7とかですらステムデフォルトのVimは7.4だったりするので
7.4に出くわす場面は結構あります。
本格的に使うサーバーでは自分でVimを入れてしまえばよいのですが、
とりあえずdotfiles
を入れて作業しようとするときにVimでエラーが出るのが嫌なので
7.4でも使える様にしました。
dein.vim
以下は導入時に書いたもの。
.vimrcの設定でdeinがインストールされていない場合自動でインストールするようにしてありますが、
プラグインの量が結構あるので、最初に入れるときに結構時間がかかります。
なので、最初にプラグインを入れないまま色々と作業をしたい場合などのために
特定ファイルがあったらdeinを入れない、という設定を入れたり、
入ってない場合に入れるかどうか聞くプロンプトを出したりするような設定を加えたりしています。
dein.vim @ Vim 7.4
この設定があるのでVim 7.4な環境で入れなければ良いだけではあるのですが、
一応以前のdeinは7.4以上をサポートしていたので7.4以上ならば入れるようにしてありました。
ただ、今年入ったあたりから色々問題が出始め、4月頃に完全に7.4のサポートを落とした様です。
dein.vimが動かない · Issue #176 · Shougo/dein.vim
Drop Vim 7.4 support · Issue #250 · Shougo/dein.vim
ただし、READMEを見るとtag 1.5を使えば使える、とのこと。
並列化処理などが出来ない様ですがとりあえず動きます。
管理ツールなので最初にインストールするときにちょっと時間がかかりますが
一度プラグインをインストールしてしまえばそれほど問題ないかと。
ということでtag 1.5を入れる様な設定に変更します。
Vim7.4でdein.vim tag 1.5を入れる設定
.vimrcの最初の方にこんな設定を書いています。
.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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| let s:use_dein = 1
let s:vimdir = $HOME . '/.vim'
if has('vim_starting')
if ! isdirectory(s:vimdir)
call system('mkdir ' . s:vimdir)
endif
endif
let s:dein_enabled = 0
if v:version >= 704 && s:use_dein && !filereadable(expand('~/.vim_no_dein'))
let s:git = system('which git')
if strlen(s:git) != 0
" Set dein paths
let s:dein_dir = s:vimdir . '/dein'
let s:git_server = 'github.com'
let s:dein_repo_name = 'Shougo/dein.vim'
let s:dein_repo = 'https://' . s:git_server . '/' . s:dein_repo_name
let s:dein_github = s:dein_dir . '/repos/' . s:git_server
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)
let s:is_clone = confirm('Prepare dein?', 'Yes\nNo', 2)
if s:is_clone == 1
let s:dein_enabled = 1
echo 'dein is not installed, install now '
echo 'git clone ' . s:dein_repo . ' ' . s:dein_repo_dir
call system('git clone ' . s:dein_repo . ' ' . s:dein_repo_dir)
if v:version == 704
call system('cd ' . s:dein_repo_dir . ' && git checkout -b 1.5 1.5' )
endif
endif
else
let s:dein_enabled = 1
endif
endif
endif
if s:dein_enabled
... " Plugins or settings related to dein
let &runtimepath = &runtimepath . ',' . s:dein_repo_dir
let g:dein#install_process_timeout = 600
" Check cache
if dein#load_state(s:dein_dir)
call dein#begin(s:dein_dir)
" dein
" Do not manage dein at Vim 7.4, as it is not HEAD
if v:version != 704
call dein#add('Shougo/dein.vim')
endif
" other plugins...
|
最初は~/.vimディレクトリを作り、
Versionが7.4以上でかつ~/.vim_no_deinというファイルがない場合
deinのセットアップを始めます。
git
が必要なのでない環境ではdisable。
Vimのバージョンが7.4以上ならdeinを入れ、7.4ならタグのtag 1.5に変更します。
deinがインストールされてなかったらgit clone
します。
その後、Versionが7.4の場合だけtag 1.5に変更。
ここまででdeinのインストールは終了です。
その後、通常このdeinもdein自身で管理してアップデートしたりする設定にしていると思います。
ただ、Version 7.4ではmasterではなく別のブランチに居るので
管理してcall dein#update()
とかを呼ぶとエラーが出ます。
逆にtag 1.5にしている環境ではそれでfixしたいのでupdateする必要もないため
上の最後の様な感じでVersion 7.4の場合にはdein自身は管理しないようにします。