Vim における高速移動あれこれ@Ruby

編集中のスクリプトが大きくなってくると、「ただちに急行だぜ!」と思った位置への移動にだんだん時間がかかるようになってくる。これをなんとか短縮すべく、Vim における移動・検索コマンドをあれこれ調べてみた。

他の言語でも意味的に大体同じ動きをすると思うけど、とりあえず Ruby編ということで。

コマンド 機能
]] 次のクラス定義先頭(class)へ
[[ 前のクラス定義先頭(class)へ
][ 次のクラス定義末尾(end)へ
[] 前のクラス定義末尾(end)へ
]m 次のメソッド定義先頭(def)へ
[m 前のメソッド定義先頭(def)へ
]M 次のメソッド定義末尾(end)へ
[M 前のメソッド定義末尾(end)へ
} 次の空行へ
{ 前の空行へ
% 対応する括弧や予約語
現在カーソル位置にある単語を後方検索
# 現在カーソル位置にある単語を前方検索
g* 現在カーソル位置にある単語を後方検索(部分一致)
g# 現在カーソル位置にある単語を前方検索(部分一致)
C-O 前のカーソル位置へ
C-I 次のカーソル位置へ

ここまでは主に相対的(次の〜、前の〜)な位置指定による移動。もっと高速に、「ここ!」という位置に絶対指定で移動するためには、タグファイルを作成する必要がある。

Ruby のタグファイルを作成するには……

ctags を使えばいいらしい。うまい具合に、Fedora に入っている ctags は Exuberant Ctags であった↓

$ ctags --help
Exuberant Ctags 5.6, Copyright (C) 1996-2004 Darren Hiebert
  :

うおりゃ!

ctags *.rb

これでタグファイル(tags)が作成され、タグジャンプができるようになる。カーソル位置の単語からクラス定義やメソッド定義へ瞬時に移動できて超便利。

コマンド 機能
C-] タグジャンプ!
(現在カーソル位置にある名前からメソッドやクラスの定義へ飛べる)
C-T 戻る
:tag pattern タグジャンプ
:tselect pattern タグリスト表示
:tags タグジャンプ履歴表示
(:3tag などで指定番号へタグジャンプできる)