パスワードを忘れた? アカウント作成
236582 journal

tamanegiの日記: vim で gtags を使ってみた

日記 by tamanegi

おぼえがき。

ctags だとあまりに非力で使い勝手が悪いので(主にc++で)
gtags を使ってみることにした。

とりあえず fedora と debian の両方で global という
名前でパッケージが存在するのでテキトーにインストール
/usr/share/gtags/gtags.vim を ~/.vim/plugin/ 以下に入れる。
これでインストールは終わり。

使う時にはまずコードがあるディレクトリで gtags -v 実行。
GPATH, GTAGS, GRTAGS, GSYMS ができる。準備はコレだけ。
ちなみに、二度目以降は gtags -iv で更新すると速い。-iv
でダメだったら -v でやり直すのが吉。

使う時は :Gtags <関数名> みたいに実行する。コレで関数の
実体のところに飛ぶ。ちなみにこの時ウインドウ下側が quickfix
とか言う輩(候補を表示してくれる)に使われる。こっちのウィンドウ
に並んでる候補のとこでリターン押すと上のウインドウが候補の
ところに飛ぶ。(ウインドウ移動は :split の場合と同じ Ctrl+w+w)。
ウインドウを縦に長くしないと使いにくくなるのが少し悲しい。

あと、:Gtags -r <関数名> で関数の呼び出し元に飛べる。
ちなみに、飛んだ後で :pop とかで戻れるわけではないみたい。
地味に悲しい。ここは何とかしたい。

ついでに、もう ctags とか使わない予感がしてきたので
~/.vim/plugin/gtags.vim に以下の2つの map を追加してみる。
一応動いたので良しとしたけど、本当に大丈夫かどうかは知らない。

nmap <C-\> :call <SID>RunGlobal(expand('<cword>'))<CR>
nmap <C-_> :call <SID>RunGlobal('-r ' . expand('<cword>'))<CR>

コレで Ctrl+]Ctrl+\ で今カーソルが指してる関数の実体にジャンプ
(:Gtags と同じ)、Ctrl+\Ctrl+_ で呼び出し元に戻る
(:Gtags -r )ようになった。ひとまずコレで行ってみる。

# できれば :pop は使えるといいなぁ。できそうならやってみよ。

(追記) Ctrl+o で :pop(もしくは Ctrl+t) 相当のことができる
みたいだ。ちなみに Ctrl+i で Ctrl+o の逆。viminfo に
残っている jumplist を使って元々できるようになっていた。

あと、Ctrl+] を潰すと vim のヘルプを見るのが辛かったので
Ctrl+], Ctrl+\ から Ctrl+\, Ctrl+_ に変更。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...