:help! の真実

Vim で :help! と実行すると、

E478: Don't panic!

だとか

E478: 慌てないでください

だとか言われる。これは割と有名なイースターエッグだと思われるが、では果たして :help! の効果はそれだけだろうか。
実は、ちゃんと機能が割り当てられている。

:h[elp]! [subject]      Like ":help", but in non-English help files prefer to
                        find a tag in a file with the same language as the
                        current file.  See |help-translated|.
Vim documentation: various

例えば、英語のhelpと日本語のヘルプがインストールされていて、

set helplang=en,ja

と設定されていたとしよう。これはヘルプで引く言語の優先度を設定するオプションで、英語を優先的に開く設定だ。
ここで

:help :help@ja

としてヘルプを開くと日本語のヘルプが表示される。このヘルプ内からタグジャンプなどをした場合はちゃんと日本語のページに飛んでくれるのだが、

:help 'helplang'

のようにコマンドから言語を指定せずにヘルプを開くと、英語が優先言語なので英語のヘルプが開かれる。
しかし、日本語のヘルプページにいる状態で

:help! 'helplang'

と ! を付けてヘルプを開くと、'helplang' の設定ではなく現在いるページの言語に合わせてヘルプを開いてくれるのである。


と、このように実は便利な :help! なのだがここでもう一度ヘルプに載っているコマンドのシグネチャを見てみよう。

:h[elp]! [subject]

こうである。

[subject]

つまり、[subject] は省略可能である。と言うことは、:help! と引数なしで実行した場合は現在開いている言語に合ったメインヘルプファイル(help.txt)が開かれるはずである。

:help!
E478: Don't panic!

…これバグじゃね?