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

投稿日: / 更新日:

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のお役立ち情報をご紹介しました。

最新情報発信中

Twitterやメルマガでも、Hinemosの保守、
開発、導入、構築やカスタマイズ等の
お役立ち情報を発信しています。
是非ご登録ください。