Vim - 新しくhelpウィンドウを開くプラグインを作った

vim-helpnewというプラグインを作りました。

ウィンドウ2分割でhelpを見る(プラグインなし)

通常、:help バッファは同一タブ内では使いまわされます。

:help でヘルプを開きます。

helpnew

この状態で別のhelpを見たくなりました。
上のウィンドウに移動して、 :help pattern とタイプします。
(違いが分かるように適当にキーワードを指定して開いています)

helpnew

helpnew

このとき上ウィンドウ、もしくは新しいウィンドウで開くことを期待するのですが、実際には既存のhelpバッファ(画像で言えば下ウィンドウ)が変更されます。

helpnew

悔しくて呟きます。

先人Vimmerが教えてくれます。

※実際のツイートは改行されているんですが、ブログ上では消えちゃっていますね。 こうなっています。

:h
:set bt=nofile
:h
<C-W>p
:set bt=help

試してみます。 横分割を繰り返すと見辛かったので、:vertical help pattern として縦分割にしています。

helpnew

喜びます。

ちなみに、もちろんhelpを引き直した時はそのウィンドウが対象になります。

上記画像にて、右ウィンドウで :help append とタイプします。

helpnew

右ウィンドウが変わりました。
今度は下ウィンドウに移動して :help concat とタイプします。

helpnew

下ウィンドウのヘルプが変わりました。ばっちり。

もっともっと分割

教えて頂いた手順は以下のようになっています。

  • 現在開いているヘルプバッファの bt(buftype)nofile に変更する
  • 新しくヘルプを開く
  • nofile になっているヘルプの bt(buftype)help に変更する

つまり、上記を繰り返せばいくつでもヘルプウィンドウを増やせます。
例えば3画面にする場合は既存の2つのヘルプを nofile にして、ヘルプを開き、help に戻してあげればいいのです。

でもこれを毎回実行するのは少し手間かもしれませんね。 ということで、せっかくのネタだしプラグイン化しました。URLは冒頭の通り。

プラグインの使い方

まず最初は普通に :help かプラグインの :HelpNew でヘルプを開きます。

あとはそのヘルプウィンドウを更新したければ通常の :help を、新しくヘルプウィンドウを作りたければ :HelpNew を使います。

これで邪魔な無名バッファを消して、ヘルプウィンドウだらけに出来ます。

helpnew

HELP!!!!