vimコマンドとGNU GLOBALというツールを組み合わせて、Linux環境でのエディタ環境を構築します。
GNU GLOBALと組み合わせると、関数ジャンプや関数呼び出し一覧表示やジャンプができるようになり、ソースコードの解析が早くなります。
また、Linux環境でのエディタの使い方を覚えることで、解析以外の作業の効率化にも繋がります。
例えば、Linux系OSのサーバにあるコードの解析をする時、わざわざWindowsのローカルマシンにソースをコピーして、グラフィカルなエディタで解析をしている場合、
サーバからソースをダウンロード・アップロードする手間・時間が省かれ、サーバ上でソースを編集してすぐ実行できるようになります。
この記事では、環境構築と、使い方をまとめます。
環境構築:
1. vimコマンドのインストール
2. GNU GLOBALのソースコードをダウンロード(https://www.gnu.org/software/global/)
3. GNU GLOBALのソースコードをmake(configureしてmake)
4. 「3」でできたglobalとgtagsをホームディレクトリのbin(~/bin)にコピー(パスが通っている場所ならどこにコピーしても問題なし)
5. 「3」でできたgtags.vimを~/.vim/plugin(無いならディレクトリを作成)へコピー
初期設定(.vimrc):
.vimrcの設定は以下にする(あくまで私の設定です。慣れたらカスタマイズしましょう)
*先頭の数字は行番号なので無視してください
コマンド使い方:
GNU GLOBALと組み合わせると、関数ジャンプや関数呼び出し一覧表示やジャンプができるようになり、ソースコードの解析が早くなります。
また、Linux環境でのエディタの使い方を覚えることで、解析以外の作業の効率化にも繋がります。
例えば、Linux系OSのサーバにあるコードの解析をする時、わざわざWindowsのローカルマシンにソースをコピーして、グラフィカルなエディタで解析をしている場合、
サーバからソースをダウンロード・アップロードする手間・時間が省かれ、サーバ上でソースを編集してすぐ実行できるようになります。
この記事では、環境構築と、使い方をまとめます。
環境構築:
1. vimコマンドのインストール
2. GNU GLOBALのソースコードをダウンロード(https://www.gnu.org/software/global/)
3. GNU GLOBALのソースコードをmake(configureしてmake)
4. 「3」でできたglobalとgtagsをホームディレクトリのbin(~/bin)にコピー(パスが通っている場所ならどこにコピーしても問題なし)
5. 「3」でできたgtags.vimを~/.vim/plugin(無いならディレクトリを作成)へコピー
初期設定(.vimrc):
.vimrcの設定は以下にする(あくまで私の設定です。慣れたらカスタマイズしましょう)
*先頭の数字は行番号なので無視してください
1 map <C-h> :Gtags -f %<CR> ←関数一覧表示
2 map <C-j> :GtagsCursor<CR> ←関数定義へジャンプ
3 map <C-n> :cn<CR> ←関数呼び出しなどの別ウィンドウのリストで下に移動するため
4 map <C-p> :cp<CR> ←関数呼び出しなどの別ウィンドウのリストで上に移動するため
5 map <C-g> :Gtags ←Gtagsコマンド入力を楽にするため(後述の:Gtagsの入力をCtrl + gに置き換えることができます)
6 set number ←常に行番号を表示するため
コマンド使い方:
コマンド | 説明 |
---|---|
gtags -v | 解析するソースのトップディレクトリで実行する。これをしないと関数ジャンプができない。なお、vimでのコマンドではなく、vimコマンド実行前の前準備。 |
Ctrl + j | 関数定義へジャンプ。定義で使うと呼び出し一覧表示 |
Ctrl + o | ジャンプ元へ戻る |
Ctrl + i | ジャンプ元へ戻るを戻る |
Ctrl + n | 関数一覧などの別ウィンドウのリストの下へ移動 |
Ctrl + p | 関数一覧などの別ウィンドウのリストの上へ移動 |
Ctrl + h | 現在のファイルの関数一覧 |
G | 最終行へジャンプ |
yy | カーソル行をコピー |
p | ペースト |
u | アンドゥ |
* | カーソル位置の単語を下へ検索 |
# | カーソル位置の単語を上へ検索 |
n | 次の候補へ移動 |
N | 前の候補へ移動 |
:数字 | 数字の行数へジャンプ |
:Gtags 関数名 | 関数ジャンプ |
:Gtags -r 関数名 | 関数呼び出し一覧 |
:Gtags -g 文字列 | 文字列をgrep |
スポンサードリンク