【Vim/Perl】 定義済みサブルーチンの一覧をQuickFixリストへ表示する

この記事は9年以上前に書かれたものです。 情報が古い可能性があります。

Vimで比較的大きめなPerlのモジュールを編集する際、定義済みのサブルーチン一覧を表示したり、他のサブルーチンの定義箇所に瞬時にジャンプして内容を確認したくなる、ということが非常に良くあります。

Vimでこれを実現するためには、.vimrcに以下の記述を追加します。

これは、VimのQuickFixという機能を利用しています。元々は、Cプログラムのコンパイルエラーを一覧表示して、エラー箇所へ簡単にジャンプするための機能ですが、これとvimgrepの機能を併用し、サブルーチンの定義箇所と思しき行(/^ *sub \w/にマッチする行)を抽出してQuickFixリストへ表示するものです(ちなみに、パターン開始直後の\vは、パターンマッチングの作法をvery magicにして、できるだけPerlに近いパターンを書けるようにするためのものです)。

なお上記では、サブルーチン一覧をQuickFixリストに表示する処理、及びQuickFixリストを閉じる処理に、それぞれ,su,clというキーマップを定義しています。また、,suでサブルーチン一覧を表示した後、QuickFixリスト上のどのサブルーチンへジャンプしようとしているかを分かりやすくするため、リスト内でカーソル行のハイライトを有効にしています。

実際に使用したイメージは、以下になります。

QuickFixリストを使用して、Perlのサブルーチン一覧を表示する

QuickFixリストを使用して、Perlのサブルーチン一覧を表示する

本当は、QuickFixリスト上でEnterを押してサブルーチンへジャンプした後、自動的にQuickFixリストを閉じるようにしたかったのですが、今のところその方法が分かりません。。。

なお、/\v^ *sub \w/のところを/\v^ *def \w/に変更すれば、PythonやRubyでも恐らく同様のことができるはずです(同様に、/\v^ *function \w/にすればJavaScriptでも使えると思います)。ちなみに当然のことながら、無名サブルーチンや無名関数をリストアップすることはできません。

以上、簡単ですがVimのお役立ち情報をご紹介しました。


ご意見やお問い合わせについて

この記事へのご意見やお問い合わせについては、こちら(お問い合わせフォーム)もしくは
Hinemos営業担当【hsd-sales@atomitech.jp】までご連絡ください。

※お問い合わせフォームからご連絡の場合には、お問い合わせ内容で「Hinemosについて」を選択し、
 本文の冒頭に「Hinemos研究日記_【タイトル名】」とご記載ください。
※メールアドレスへご連絡の場合には、件名を「Hinemos研究日記_【タイトル名】」でご連絡ください。