vim-users.jp

Hack #199: :helpに慣れ親しむ

Posted at 2011/02/05
このエントリーをはてなブックマークに追加

タグ名の規則を知らないと引けない

さて、少しだけHack #45のおさらいです。

関数は「()」を末尾に持つタグを持っています。
オプションは「’(シングルクォート)」で囲まれたタグを持っています。
Exコマンドは先頭に「:(コロン)」を持つタグを持っています。

また英語版以外のhelpが用意されている場合はタグ名に続けて「@ja」のように@ + {各言語特有の2文字の文字列} が続きます。 しかし英語版とその他の言語といったように両方存在した場合は 英語版のタグにも@enという文字列が末尾につきます。

ちなみにこの2文字は「help.jax」だったら「ja」、 「help.frx」だったら「@fr」のように 各言語のhelpファイルの拡張子から末尾のxを取った2文字です。 英語だけは例外で「.txt」という拡張子のhelpファイルです。

コマンド(!= Exコマンド)はだいたい次のような規則になっています。

{モード}_[CTRL-]{キー}

またさらに{キー}の部分は次のようになっています。

{キー1}
{キー1}_{キー2}
{キー1}_{キー2}_{キー3}
...

のように押すキーの数だけ以下続いていきます。

実践的な例

さてこの記事では少し進んだ実践的な例を出すことにしましょう。 例えば:help v_<という項目は

  1. ヴィジュアルモードの(v)
  2. <というキー

で実行されるコマンドということです。

また、:help i_CTRL-R_=という項目は

  1. インサートモードの(i)
  2. <C-r>=というキー

で実行されるコマンドということです。 コントロールキーは「CTRL-」で表されます。 また2個以上キーが続く場合はこのように「_(アンダーバー)」で区切られます。

コマンドラインではワイルドカードを使うことができ、 <Tab>を押した時点でマッチする候補をリストアップしてくれます。
(この際の挙動は'wildchar', 'wildmode''wildmenu'の値に強く依存します。以下この記事では'wildchar'<Tab>'wildmode'"full"'wildmenu'がオンだと仮定します)

「buf」を含む関数

:help *buf*()<Tab>

関数は「()」を末尾に持つタグを持っています。

「wild」を含むオプション

:help '*wild*'<Tab>

前のと同じですね。 オプションは「’(シングルクォート)」で囲まれたタグを持っています。

頭が「:Neo」で始まるExコマンドを日本語版helpのみから

:help :Neo*@ja<Tab>

Exコマンドは先頭に「:(コロン)」を持つタグを持っています。 @ + 2文字の文字列を末尾に持ちます。

<C-d>

コマンドラインで<Tab>の代わりに<C-d>を押すと カーソルより前のパターンに一致する名前を コマンドラインに一覧表示してくれます。 例えば前述の頭が「:Neo」で始まるExコマンドを日本語版helpのみから探し出そうとした場合、 <Tab><C-d>では以下のような違いがあります。

最初の状態

<Tab>

<C-d>

<C-d> => 項目名は?

ちなみにこの<C-d>のタグ名は、 ここまで読まれた方なら分かると思いますが

:help c_CTRL-d

です。Vim日本語ドキュメントがインストールされている場合その項目名は?

:help c_CTRL-d@ja

です。 少し慣れましたでしょうか。 大丈夫、焦らずとも使ってる内に慣れます。

注意点

ワイルドカードは使えないので、カーソル下の単語を探すコマンド*の項目は:help starです。 また、このコマンドはノーマルモードのものなので:help n_starじゃないか?と思われた方もいるかもしれません。 このようにノーマルモードの項目は先頭にn_と付きません。 なので冒頭で言った次のような規則は嘘でした。

{モード}_[CTRL-]{キー}

正確に言えばノーマルモードの場合のみ

[CTRL-]{キー}

になります。

:helpgrep

Hack #45にもありますが、:helpgrepはhelpを全文検索するExコマンドです。 :grep:vimgrepなどと同じインターフェースで使えます。

unite-help

またunite.vimというプラグインのunite-helpというプラグインがあります。 これは限られたコマンドラインでワイルドカードを駆使して探すことなく helpを全文インクリメンタル検索することができるので、 初心者でも手軽に、また:helpよりもより素早く項目を探すことができます。 :helpgrepのインクリメンタル検索版というとわかりやすいでしょうか。 まさにunite.vimの真価を発揮するプラグインと言えるでしょう。

ref.vim

また直接は関係がないのですが、 ref.vimというmanやperldocやpydocやrefeなど その他いろんなマニュアルを引けるプラグインが存在します。 これをインストールすることで、デフォルトのKの挙動が Vimの:helpを引くだけでなく、perlスクリプトでperldocを引くようになったりと大幅に拡張されます。

tyru

もどる
blog comments powered by Disqus