先日Vim 8.0がリリース されましたが、最近プラグインで8.0以上じゃないとダメだよ、という 物も出てきました。
こう言った時に、 dein.vim等を使ってvimrcで 全てのプラグインを管理していると古いvimしか入ってない環境でちょっと面倒です。
そういった場合に一つのvimrcで簡単に処理する書き方について。
vimrc内でのVimのバージョンチェック
vimrcに限ったことではありませんが、
Vimのメジャーバージョンはv:version
と言う値に入っています。
コマンドモードで
:ehco v:version
とすると800
とか704
とか出てくると思います。(vim 7.4だと704
。)
これを使えばVimスクリプトで
1 2 3 |
|
みたいな感じでif
文で囲ってそのバージョンに沿った設定を書いていけばOK。
また、細かいパッチレベルで導入された設定とか対応プラグインを使いたい場合は、
1 2 3 |
|
な感じで、has
を使ってpatch
+ パッチ番号
を調べることで
そのパッチが入ってるかどうかを調べられます。
今使っている.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 56 57 58 59 60 61 62 |
|
こんな感じ。
dein.vimは7.4以上対応なのでそのように。
dein.vimで導入しているプラグインのうち、
itchyny/vim-parenmatch
という、カッコのマッチング表示をVimのデフォルト版より軽量にしたものですが、
この中で使ってるOptionSet
というイベントが導入されたのが
7.4のパッチ786なのでそれを要求。
chrisbra/vim-diff-enhanced
はdiff
の表示をより良い感じにしてくれるプラグインですが、
このプラグインが最近のアップデートで8.0を要求してくる様になりました。
以前は7.4で使えていたのですが、
昨日の変更
で8.0を要求する様になったみたいです。
Color設定のところでは全角文字を可視化したりするのにmatchadd
を使っていますが、この関数が7.2から
導入されたものなので7.2以上で使います。
7.1以下ではmatch
と2match
を使っていますが、
これとあと3match
というのがあり、これらは一度しか使えないため
(もう一度使うと前の設定は破棄される)
ここではまだ大丈夫ですがもっと色々設定したいと思うと破綻してしまいます。
その場合は優先度の低いものを無視、と言う形にすると思いますが、 もう7.1とかしか使えない環境なら逆にわざわざvimrcを持ってくほどでもないので それ程気にする所でもないかな、と。
set spelllang+=cjk
はスペルチェック時に日本語を除外する設定です。
英語などでスペルチェックを有効にしておくと日本語の様な2バイト文字は全て
意味不明なものとしてスペルチェックにひっかかってしまいます。
主に日本語書く時には切っておけば良い、というものではあるのですが、 いちいち変更するのも面倒なので日本語とかはチェックから外したい、 という場合には7.4 patch88以降だとこの設定が出来ます。
breakindent
は7.4 patch338で導入されたオプションで
wrap
オプションを有効にして長い行を折り返す様に表示している場合、
折り返された行もその行の本来のインデントの一から折り返し業が始まる様に出来るオプションです。
ちょっと短い画面の表示とかだと逆に見づらいかな、ということで今はオフにしていますが、 ものによっては大分見やすくなるものもあると思うので好みで。
fixendofline
(またはfixeol
)は7.4 patch 785で導入されたオプションで、
有効になっているとファイルの最終行に改行コードを加える様になります。
デフォルトでオンになっていますが、このオプションが導入される前は 常にオンな状態で動作を変えるにはファイルをバイナリとして認識させ この最後に加える仕様を止める等という無理矢理な方法しかありませんでした。
このオプションが導入されたことによりnofixendofline
を設定しておくだけで
勝手に改行コードを追加することはなくなります。
というわけで、ちょっとプラグインのアップデートでバージョンチェックの 更新が必要だったので使ってる所をおさらいしてみた、と言う感じです。
恐らくまだパッチでバージョン途中で追加されたオプションに関するものとかで 7.3, 7.4辺りにも見逃してるものが多々あると思いますが、 何か気づいたものがあれば教えてもらえるとうれしいです。