write ahead log

ロールフォワード用

UbuntuにGNU GLOBALを設定する

0.GLOBALって?

GNU 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変えようかな.