Vim
C++
Linux
ctags

【最小2行】超最低限の設定から始めるVimの関数ジャンプ

More than 3 years have passed since last update.

超最低限の導入手順

command
# ソースツリーのトップで実行
$ ctags -R
vim
"適当なソースをvimで開いて、トップに生成されたtagsファイルへパスを通す
:set tags=<tags_path>

ctrl + ] ジャンプ!
ctrl + t 戻る!

以上、Good Luck !!\(^o^)/

なんでこんなエントリ書いてしまったん…?

「Vim 関数ジャンプ」とかでググると素晴らしい情報がたくさん出てくるんですが、

Vim とちゃんとお付き合いしたい人向けの情報が多く、正妻はIDEな人には敷居が高く感じたので、
「Vim!お前とはSSHだけの関係だといっただろう!」と、
割り切った付き合いをしている人にも参考になればと思って書いてみました。

何はともあれ、まずは使いはじめるのが大事だからね!

えっ、流石にこれだけだとちょっと…

FAQっぽくちょっとずつ情報を載せてきます。

っていうかそもそも何の言語に対応してんの?

下記コマンドで対応言語の一覧が出力されます。たっぷりでます。
ctags を最新バージョンにアップデートしておくとより良いです。

command
$ ctags --list-languages

毎回 :set tags=<tags_path> とかやっとれんわ

私もそう思います。vimrcに移しましょう。
これで Vim 起動時に自動で読み込まれます。

vimrc
set tags=<tags_path>

関数ジャンプ精度悪くない?

ctags は意味解析まで行っていないため、ツリーに同名・同引数の関数が存在しているとしばしば間違えます。
そういったときは下記コマンドで、ジャンプ先の候補をリストアップしてから、数字を入力してジャンプしてください。

g, ctrl + ] ジャンプ先候補表示!

コードに変更があるたびに $ ctags -R 必要なん?

必要です…が、関数がガシガシ追加・削除されるわけでなければ、
気が向いた時に手動で実行すれば十分かと思います。

自動で実行したいという人はググると vim plugin を使った方法や、git の hook で自動生成する方法などもでてきますので、トライしてみると良いと思います。

ウィンドウを分割しつつ関数ジャンプできる?

以下のコマンドで関数ジャンプしてください。
ウィンドウが分割された後の操作は頑張ってください。

ctrl + w + ] 別ウィンドウ表示でジャンプ!

呼び出し元ジャンプしたいんだけど?

ctags ではできません\(^o^)/

おわりに

正直なところ、ctagsの提供する機能はIDEと比較すると貧弱ではありますが、
何もサポートがない状況と比べると大きな助けになると思います。

特にctagsは敷居が低く導入しやすいので、
作業が発生した場合にはぜひトライしてみてください!

確認環境

  • Ubuntu 12.04LTS
  • Mac OS X 10.9.2
  • CYGWIN_NT-5.1-WOW64