Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

[Linux][開発] GNU GLOBALとvimで快適な開発環境を手に入れる

$
0
0

これまでソースコードを読む時に複数の端末を用意して、grepして定義を探したりしていたのですが、大きなコードになると検索量も多くなって嫌になってたところ、「GNU GLOBALを使うと幸せになれる」と聞いたので試しに使ってみました

準備: GNU GLOBALのインストール

以下の公式サイトから[Download]を開き、Source archiveにある最新のソースコードをダウンロードします

https://www.gnu.org/software/global/

この記事では、6.5.4 のバージョンを使用しています。また、システムを自由に変更できない環境を想定して、make installを行わない手順となっています。必要に応じて適宜読み替えてください

ダウンロードした圧縮ファイルを解凍し、configure と make を実行します

$ tar xvf global-6.5.4.tar.gz
$ cd global-6.5.4
$ ./configure
$ make

コンパイルした global と gtags を ~/bin にコピーします

$ cp global/global ~/bin
$ cp gtags/gtags ~/bin

※ GNU GLOBALをシステムにインストールしても構わないのであれば、コピーする代わりに make install を実行してください

vimのプラグインを ~/.vim/plugin にコピーします

$ mkdir -p ~/.vim/plugin
$ cp gtags.vim ~/.vim/plugin

~/.vimrc にgtagsの設定を追加します

map <C-h> :Gtags -f %<CR>
map <C-j> :GtagsCursor<CR>
map <C-n> :cn<CR>
map <C-p> :cp<CR>

準備: ソースコードを解析する

解析したいソースコードのディレクトリに入り、gtagsコマンドを実行します。"-v"オプションは処理中のメッセージを表示するためのものです

$ gtags -v

GPATH、GRTAGS、GTAGS という3つのファイルが作成され、これらのファイルにコードの解析結果が入っています。ソースコードに修正が入った場合は、再度gtagsコマンドを実行して解析しなおす必要があります

補足: バージョン管理を行っている場合

git や subversion などでバージョン管理を行っている場合、gtagsで作成された解析結果を間違ってcommitしないように注意しましょう。ignoreの条件(除外リスト)に入れておくのが良いかもしれません

gitの場合は .gitignore 、subversionの場合は .svnignore に以下を追加します

GPATH
GRTAGS
GTAGS

subversionの場合は加えて、条件を適用するために以下のコマンドを実行します (gitは .gitignore に追加するだけでよい)

$ svn propset svn:ignore -R -F .svnignore .

globalコマンドの使い方

globalコマンドで主に次の事が行えます。また、各コマンドで "-x" オプションを付けるとヒットした場所の詳細(ファイル名と行数、行の内容)が表示されるようになります

関数が定義されているソースを調べる

コマンド

global ${関数名}

実行例

$ global Init_ext
dmyext.c

ソースの中に定義されている関数を調べる

コマンド

global -f ${ソースファイル}

実行例

$ global -f main.c
RUBY_EXPORT        12 main.c           #undef RUBY_EXPORT
main               23 main.c           main(int argc, char **argv)

関数が呼び出されているソースを調べる

コマンド

global -r ${関数名}

実行例

$ global -r Init_ext
internal.h
nacl/pepper_main.c
ruby.c

grepして指定したキーワードが入っているソースを探す

コマンド

global -g ${条件}

実行例

$ global -g win32
dir.c
ext/fiddle/function.c
ext/fiddle/libffi-3.2.1/src/dlmalloc.c
ext/fiddle/libffi-3.2.1/src/x86/ffi.c
ext/fiddle/libffi-3.2.1/src/x86/win32.S
ext/io/console/console.c
ext/nkf/nkf-utf8/nkf.h
ext/tk/tcltklib.c
ext/win32ole/win32ole.c
ext/win32ole/win32ole.h
      : (略) :

普通にgrepかけた時とは違い、ファイル名のみが出力されます

vimエディタとの連携

上の準備の手順で、vimのプラグインを入れた状態で、ソースコードをvimで開いて以下の操作をします

ソースコードの関数一覧

Ctrl + h を押すと、下部にそのソースの関数が表示されます

Ctrl + n でリストのカーソルを下に移動します
Ctrl + p でリストのカーソルを上に移動します

カーソル位置の関数にジャンプ

調べたい関数にカーソルを合わせ Ctrl + j を押すと、その関数の中にジャンプします

ジャンプする前の位置に戻るには Ctrl + o を押します

調べると、他にも色々な使い方があるようですが、ここでは基本的な使い方までで留めておきます


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>