vital.vim を使うときはそれなりの覚悟が必要
この記事は Vim Advent Calendar 2013 181 日目の記事になります.
vital.vim とは
vital.vim は, vim 本体にはないけどあると便利なライブラリ群です. vim-jp の有志とその愉快な仲間たちによって開発されています. vitalize 時のプラグイン名さえ重複しなければ複数のバージョンの vital.vim が存在していても問題ないような仕組みがあります.
ujihisa
http://lingr.com/room/vim/archives/2013/07/13#message-15897280
とにかく一番厳しいのは既存の関数の挙動を変えるときにchangelogに書くという点だけです
(この情報が:Vitalize時に表示されるので)
changelogというよりnewsといってもいいかも
あのchangelogとvitalizeの仕組みを考案・開発した人は神です
5/26 に usevim で紹介され, 5/27 あたりに vital.vim ブームがやってきました.
crazymaster
vim-jp – Lingr
vital.vimがgithubのTrendにのりましたね
todayとweekly
今も weekly で 9 位にいます.
ちょっと待ってよ
暗黒美夢王は lingr で良く以下の趣旨の発言をされています.
:Vitalizeするとほとんどの場合、プラグインの互換性が壊れて修正が必要になるため、
vim-jp – Lingr
積極的にやりたくならないのです。
vital の更新はかなりリスクが高い
vim-jp – Lingr
破壊的変更も多いし、そもそもプラグインが大量にあると時間がかかる
どういうことかというと, 「複数のバージョン〜仕組み」があるために, 頻繁に非互換が発生する修正が取り込まれています. 一応、非互換が出た場合には Changes に記述することになっています. 見てもらえばわかりますが, 結構大胆です. 関数がなくなったり, モジュール名が変わったり...
たとえ Changelog 書いてあったとしても, 複数個所で使用している関数すべてを問題なく修正できる保証はありませんし, 普通は vitalize は一度しかやらなくて済むほうが平和です.しかし, vital.vim にはバグはありますし, vim の非互換 update によって, vital.vim を更新しないといけなくなることもあります.
- System.File: Fix for Vim 7.4.122 · vim-jp/vital.vim@8a98fc5 · GitHub (vim の非互換により発生したバグ)
- Preludeというファイルがカレントディレクトリにあると、vitalがクラッシュする · Issue #100 · vim-jp/vital.vim · GitHub (vital.vim 利用者全員に影響のあるバグ)
また, Changes に書かれていないものもあります.
- Prelude を必須モジュールから外す · Issue #140 · vim-jp/vital.vim · GitHub (Prelude モジュールを利用している人全員に影響)
- Web.HTTP で if_python 時に maxRedirect が有効にならない (pukiwiki.vim ではまった)
それから, 仕様が固まっていないものがそのことが明記されずに公開されているものがあり, vital.vim の動向を追いかけている人でないと把握できないようにもなっています.
- LasyList.take() の挙動が一致していない · Issue #93 · vim-jp/vital.vim · GitHub
- これは今後仕様が変わることが想像されますが(きっとされません :-)), ドキュメントには記述されていません.
- VitalにAssertion系のモジュールがあったほうが便利そうなので提案 by rbtnn · Pull Request #128 · vim-jp/vital.vim · GitHub
- close されていますが, どうなるのかしら.
今後取り込まれると, 非互換が発生することが確実な issueたちも.
- Web.* の関数名を snake_case に · Issue #78 · vim-jp/vital.vim · GitHub
- Arugments order of Data.List functions · Issue #94 · vim-jp/vital.vim · GitHub
別の問題として, 残念なことにテストが十分になされていません.
テスト自体がないものもありますし, ある場合でも自動的に行っているのは Travis-CI でデフォルトで提供される vim のみです. windows ルートや他のバージョンでのテストは現時点では行われていません.
raa0121
vim-jp – Lingr
WindowsでVitalのテストする手順がほしいなぁ
Vimproc必須なのかな
travis-ci以外でWindowsのテストも常時叩くべきかも
vim本体含め
ということで, vital.vim を利用する場合には, ただ恩恵が得られるだけではないことを理解しておく必要があると思います.
そうはいっても
vital.vim は便利です.
issues に報告しさえすれば問題点は修正してもらえるはずですし, こんなんほしいなーとかつぶやくと対応してくれる人がいるかもしれませんし, 積極的に使うべきだと思います. 多くのものは基本的な機能の提供なので vim script のお勉強にも便利です.
また使われることによってふわふわな部分の仕様も確定していくのだと思います.
それでも気になってしまう人は, ライセンス上ソースコードをコピーして利用することが許されているので, 使用する部分が少ない場合にはコピーするのも一つの手段だと思います.
追記1
lingr ログをいくつか追加しました.