emacsメモその5・タグジャンプ最強伝説編

最近Bな人の日記更新されねーな… → お、ひさしぶりに更新されてるぞ → なんだよemacsメモかよ!
と、がっくりなみなさまこんにちは。
会社の昼休みに「perlって統合開発環境とか云々」っていう話が出たのでここぞとばかりにemacs普及企画だよ!
(世の中的にはemacs使いとvi使いって半々くらいだと思うんだけどなぜかうちの会社はemacs派が私だけなんだぜ…)

というわけで今回のお題は「プログラマーなら関数名補完できたり関数定義に簡単にジャンプできたりするとうれしいよね?」です。

関数定義へジャンプ — imenu

↑見出しが参考サイトへのリンクになってますので詳細はそちらを参照(何

ファイル一枚程度の小さなものならこれで十分。今いるファイル内の関数一覧表示&目的の関数にジャンプ。
正直、ファイル内ならC-sで検索でいいじゃんという気もしますが、覚えられないような長い関数名や検索で探しにくいような短い関数名の場合はまあ有効かなと。あと最近流行り(?)のanythingを使ってる人なら便利なのかもしれない。
…まあ、もっぱら「関数一覧表示→excelにコピペ」という使い方がメインですが(笑)

タグジャンプ − 関数定義へジャンプ etags

↑見出しが参考サイトへのリンクに(略

とまあ、imenuは前座でこっちが本命。
複数ファイルにまたがった関数リストができちゃう。
「この関数定義はどのファイルにあったっけな。あああのファイルか、あのファイルってどこにあったっけな、あああのディレクトリか、開くのめんどくせえな、さてこのファイルの中で目的の関数はどこに…」という動作が、find-tag(M-.)で一発。これはすごい。
しかもカーソル位置付近の単語をデフォルトで補完してくれる(info-lookup-symbol(C-h S)と同様の使い勝手)。ソースコード読んでて「この関数って何してるんだっけ?」と思ったらその場で関数定義に飛べるしあわせ。
さらに M-Tab で関数名の補完が効くようになるので、長くて覚えられないクラス名も安心☆

かなりいろんな言語に対応してるっぽいです。
難点としては定期的にTAGSファイルを生成しないといけないってことでしょうか。(↑の参考サイトには自動生成の方法も載ってます)

WindowsでMeadowな人は、Meadowの実行ファイルがインストールされたディレクトリにetagsも一緒にインストールされてるはず。

speedbar

M-x speedbar でなんかメニューバーみたいなのが出てくる。
ディレクトリ内のファイル一覧が表示されてて、ファイルについてる「+」マークをクリックすると関数一覧が表示される。関数名をクリックすると関数定義に飛べる。
…はずなんだけどファイルによっては表示されなかったりファイル自体が表示されなかったりしてよくわかんない。というか私はコレ使ってないのでよくわかんない。こんなのもあるらしいよっていう紹介だけってことで。
キーボードよりマウス派な人には便利かも。でもマウス派はそもそもemacsなんか使わないか。。。

おまけ:関数操作いろいろ

関数定義の先頭/末尾へ移動、関数全体を選択
C-M-a (beginning-of-defun), C-M-e (end-of-defun), C-M-h (mark-defun)
なにかと使い勝手がよいです。これのできるエディタって意外と少ない気がする。

大きいファイルの中で迷子になりやすい人は which-function-mode をオンにしておくとカーソル位置の関数名がわかってしあわせになれるかも。

 ***

他にも「プログラマーならこれははずせない・これが便利だよ!」というオススメがあればぜひコメントから教えてくれると超うれしいよ!


  • ちゃうねん、私もemacsのええとこは知ってるんやけど、サーバを最小構成で構築したらviしか入ってないのさ。と言い訳してみる元emacs使い。 – らーゼ (2009年05月07日 21時37分37秒)