怖くない! Vim plug-in バグ報告

/web/tool

Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。

あるいはバグに当たったときの対処療法など。
いつにもましてゆるゆるな第五回 Sugamo.vim おつかれさまでした。今回はShougoさんが来てくれたので、「不具合発生したとき、どういう報告したら怒られない判りやすいですか?」と聞いてみました。Shougoさんの回答は...

  1. 再現するか? その方法は?
  2. 本当にプラグインの問題なのか?
  3. エラー文は大事。ちょー大事!

ひとつめ。当たり前だけど大事なこと。仕事でサポートとか運営やってる人なら身に沁みているを思いますけど、「なんかたまに変」とか曖昧な報告だと動きようがないですよね。Shougoさんの手元で発現しない問題は、如何にShougoさんでも対応できないというわけです。

ふたつめ。だいたいのVimユーザーは、複数のプラグインを導入していると思います。プラグインの種類によっては機能が干渉し、特定の動作が怪しくなることがあります。たとえばneocomplcacheautocomplpopが競合する、とかは割と有名なシーン。問題解決の意味でも、いったん関係の無いプラグインを全削除して入れ直すと何故か直ったりすることも多いので、プラグインの切り分けは重要ですね。VundleNeobundle環境であれば、この辺(導入→削除→再インスト)は楽です。

みっつめ。単に不具合といっても色々あるので、エラー文の内容は重要です。特に予期しないエラーの場合はエラー内容が判らないと、どこが悪さをしているのかさっぱり判りません。ちなみにエラー文ってのはアレですね。Vimだとステータスラインの下に一瞬パッと出て消えるか、何かキー押したりすると消えちゃう文字列。普通に使ってると「なんかエラー文っぽいの出てたけど、覚えられないよね、アレ!」て奴です。

実はVim のエラーメッセージは:messageで再確認することができます。

:message

Unite環境であれば、以下のように出力できます

:Unite output:message

この場合は、行選択→ヤンク→ペーストできるので便利です。エラー文は長文になることが多いので、適当な場所(Gistとか)に貼り付けて報告するなどすれば良いんではないかと。

その他のTips

.vimrc設定が邪魔してる?
Plugin設定部分で使っている関数名が変更されていたり、他のキーマッピングと干渉していたり。 現在有効なキーマップは :nmap とか :nmap ff とかで確認できます。
GVimのみか? 環境を変えてみたら?
GUI版のVimではダメだけど、コンソール版のVimだと大丈夫だったりすることがあります。
どのリビジョンから発現するか?
Vundle/Neobundle環境下だと全てのプラグインはGit管理なので、git reset などを用いてコミットを遡っていけば不具合箇所を特定することができます。失敗しても入れ直せば良いんだから、気楽なもんです。
ここまで検証できれば、だいぶ親切。前Ver.で動いてるってことはプラグインの問題なんだと確定することもできます。
vimprocは最新か?作り直したか?
UniteやVimFilerなど、vimprocを使用している一部のプラグインは、vimprocをリビルドしないとダメな場合があります。比較的最近にvimprocが更新されている場合は、注意してみましょう。
:set pasteになっていないか?
特にneocomplcacheでよく見かけられる問題。pasteモード、てのは貼り付けたテキストがキーマップのトリガーになっていろいろ悪さするのを防ぐ機能で、コピペ用。どんなプラグインもキーマップも動作しませんよー、という状態です。
.vimrcにset pasteとか書いて置くのは悪手なので、set pastetoggle=<F12> で代用するなどしましょう。
文章で説明するのが難しい
再現する様子を動画にとってVimeoにでも投稿する、という荒技もあります。Macだと標準のQuickTimeから簡単に録画できるので便利。

note: かつてはTwitterで何かしら呟くと、どこからともなく「修正しました」と降臨されるShougoさんでしたが、最近はTwitterあんまり見てないみたいです。「GitHubのissueで報告してください」とのことでした。

Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。