スパム対策として書込み時にID/PWを要求されますが、ローマ字で ほげ/ホゲ で書き込めるようになります。

GNU GLOBAL を使う

GLOBAL とは?

タグ作成ツール。簡単に言えば ctags の高機能版。
ctags よりもうれしいところは、関数の呼び出し元を参照できることと、
ソースを html 化できること。
ただし対応言語は C, C++, Yacc, Java, PHP4 and assembly のみ。

インストール

http://tamacom.com/global-j.html
から global-x.x.x.tar.gz をダウンロードして

$ tar xzvf global-x.x.x.tar.gz
$ cd global-x.x.x
$ ./configure
$ make
$ su
Passward:
#make install

で /usr/local/bin にインストール完了。
最後に vim スクリプトをコピー。

$ cp /usr/local/share/gtags/gtags.vim ~/.vim/plugin

Windows版バイナリ

http://www.geocities.com/jadoxa/global/index.html

からダウンロードして、展開してbinにPATHを通せばOK。

使い方

まずはソースファイルのあるディレクトリに移動して

gtags -v

でタグ作成。GPATH GRTAGS GSYMS GTAGS の4つのファイルができる。

コマンドラインからの使い方

% global func1
DIR1/fileB.c            # func1() は fileB.c で定義されている

'-t' オプションで ctags フォーマット表示

% global -t func1
main    cscanner.c      2917
main    hoge.c  5
main    llmain.c        367

'-r' オプションで参照元表示

% global -r func2
../DIR1/fileA.c         # func2() は fileA.c で参照されている

POSIX 正規表現も使える

% global 'func[1-3]'
DIR1/fileB.c            # func1, func2 and func3 are matched

'-x' オプションで詳細表示

DIR2/fileC.c
% global -x func2
func2              2 DIR2/fileC.c       func2(){ i++; }
func2              4 DIR2/fileC.c       func2(){ i--; }

'-a' オプションで絶対パス表示

% global -a func1
/home/user/ROOT/DIR1/fileB.c

Vim からの使い方

   :Gtags main

で global -t main を実行し、結果をエラーウィンドウで開く。
'-r' で参照元一覧をエラーウィンドウに表示

:Gtags -r func1

'-g' でgrep

:Gtags -g 'pattern'

main.c 内のオブジェクト一覧

:Gtags -f main.c               <- locate objects in main.c

% や # も使える

:Gtags -f %                    <- locate objects in main.c

html を作成するには

$ htags -saFf

で ./HTML 以下に作成される。

google "GNU global" for more information.

Windows版Vimでgtags.vimを使う方法

Vim6スクリプトお勉強スレ >>619より

gtags.vim(version 0.2)を以下のように修正。

303行目:
-     let stuff = system(cmd . '>' . tmpfile)
+     if has("win32")
+         silent execute "!" . cmd . ">" . tmpfile
+     else
+         let stuff = system(cmd . '>' . tmpfile)
+     endif

silent execute "!" . cmd . ">" . tmpfileの部分を

call system(cmd . '>' . tmpfile . "& exit")

としてもよい。DOS窓がでなくなる。

:Gtagsのエラーリストを詳細表示にする方法

:Gtagsのエラーリストは検索した文字列しか表示してくれないので、 grepみたいにマッチした行全体を表示したい。

gtags.vim(version 0.2)を以下のように修正。要sed。

302行目:
-    let cmd = 'global' . sep . '-tq' . option . sep . pattern
+    let cmd = 'global' . sep . '-xq' . option . sep . pattern
+    let cmd = cmd . " | sed 's/^[^ ]* *//' "
318行目:
-    let &efm="%m%\\t%f%\\t%l"
+    let &efm="%l%\\s%f%\\s%m"

:Gtags -g 'パターン'で、パターンにスペースが含まれるとうまくいかない問題の修正

gtags.vim(version 0.2)を以下のように修正。

204行目:
+    let state = 0
+    let prev_c = ''
211行目:
-        if c == ' '
+        if i > 0
+            let prev_c = a:str[i - 1]
+        endif
+        if c == "'" && prev_c != '\'
+            let state = state == 0 ? 1 : 0
+        endif
+        if c == ' ' && state == 0
230行目:
-                if c != ' '
+                if c != ' ' || state != 0

メッセージ


  • htags は gtags の後に実行しないといけない。あと、htags は screen の中で実行するとエラーになる。Debianのパッケージには gtags.vim が入ってなかった… orz -- 2005-04-06 04:20:29 (水)
  • global コマンドはカレントディレクトリに GTAGS が無いと再起的に上のディレクトリを捜しに行く見たい。 -- 2005-04-06 04:22:00 (水)
  • グローバルやローカル変数の参照個所も特定できればうれしいのですが -- 2005-04-19 10:21:13 (火)
  • 詳細表示でsedがなくても318行目を「let &efm="%m%\\t%f%\\t%l,%l%\\s%f%\\s%m,%m%\\t%l\\t%f," . pattern . " %.%# %l %f %m"」としたらできました。(Win32版にて) -- 2006-08-16 09:04:19 (水)
  • Win32版ですが上記の方法ではうまくいかない場合があったので、318行目を「let &efm="%*\\w%*\\s%l%\\s%f%\\s%m"」と修正したらうまくいきました。 -- 2007-01-05 12:54:03 (金)



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-10-14 (火) 01:13:17 (1373d)