0.GLOBALって?
GNU GLOBALはソースコードを読むときにとっても便利なタグ付けツール.
有名なので詳しくは省略.
1.設定
自分の設定だけ一通りメモる. Ubuntuは15.10
インストール
aptで入れた.
twinbird@~$ sudo apt-get install global
2.vimの設定
pluginの導入
これがちょいハマった.
vimのプラグインを入れたかったんだけど、aptで入れたらどこにあるかわからず.
/usr/share/doc/global/examples/
にありました.
twinbird@~$ mkdir -p ~/vim/plugin/ twinbird@~$ zcat /usr/share/doc/global/examples/gtags.vim.gz >~/.vim/plugin/gtags.vim
以下を参考にしました.ありがたい. Going My Linux Way - Vim で GNU GLOBAL
vimrcへの追記
以下を追記
"GLOBAL用 "ctrl-g1回でGtags map <C-g> :Gtags "ctrl-jでGtagsCursor map <C-j> :GtagsCursor<CR> "ctrl-nで次のタグへ map <C-n> :cn<CR> "ctrl-pで前のタグへ map <C-n> :cp<CR>
実は私のvimrcはvimgrepが<C-g><C-g>に割り当てられているのでキーマップは若干迷った.
"ctrl-g2回でカーソル文字列をvimgrep nmap <C-G><C-G> :vimgrep /\<<C-R><C-W>\>/ * \| cw
3.試す
SQLiteのソースコードを取ってきて試した. (これもそのうちメモるかな.毎回忘れる.Fossil普段使わないし...)
tag生成
twinbird@~/SQLite-2f13c16b$ gtags -v twinbird@~/SQLite-2f13c16b$ file G* GPATH: Berkeley DB 1.85/1.86 (Btree, version 3, native byte-order) GRTAGS: Berkeley DB 1.85/1.86 (Btree, version 3, native byte-order) GSYMS: Berkeley DB 1.85/1.86 (Btree, version 3, native byte-order) GTAGS: Berkeley DB 1.85/1.86 (Btree, version 3, native byte-order)
おー, 出た出た.
globalコマンド
twinbird@~/SQLite-2f13c16b$ global -g sqlite3_prepare_v2
ext/fts2/fts2.c
ext/fts2/fts2_tokenizer.c
ext/fts3/fts3.c
ext/fts3/fts3_expr.c
ext/fts3/fts3_tokenizer.c
ext/fts3/fts3_write.c
ext/fts3/tool/fts3view.c
ext/fts5/fts5_config.c
...
おー、出た出た.
4.使いそうなコマンド
コマンド | 意味 |
---|---|
global 関数名 | 関数名 → ソースコード (定義) |
global -r 関数名 | 関数名 → ソースコード (参照) |
global -f ファイル名 | ソースコード → 関数一覧 |
global -c 関数名の一部 | 関数名の一部 → 関数一覧 |
global -g 検索文字列 | ソースコードの grep |
とりあえずvimに入れたものはあったほうが便利っぽい(だから追加したんだけど...)
もう少し使ってこなれてきたらkeymap変えようかな.