この記事はGNU Globalのインストール手順のメモです。
-
版数:
- GNU Global 6.6.8
- Pygments 2.2.0
-
環境
- vim 8.0 (2016 Sep 12, compiled Jan 20 2022 02:47:53)
- Ubuntu 18.04.6 LTS (Bionic Beaver)
- root権限なし(sudo不可)
- プロキシ下
手順
Pygmentsパーサのインストール
pip install --proxy ${HTTP_PROXY} --user Pygments
-
--proxy ${HTTP_PROXY}
はプロキシ下でない方には不要です。 - プロキシ下の方は環境変数
HTTP_PROXY
を適切に設定してください。
GNU Globalのインストール
ビルド
cd /tmp/
wget https://ftp.gnu.org/pub/gnu/global/global-6.6.8.tar.gz
tar axf global-6.6.8.tar.gz
cd global-6.6.8/
./configure --prefix=${HOME}/.local/global
make -j $(nproc)
make install
-
${HOME}/.local/global
は一例です。好きな場所を指定してください。
global
,gtags
コマンドのパスを通す
mkdir -p ${HOME}/.local/bin/
cd ${HOME}/.local/bin/
export PATH=${PATH}:${HOME}/.local/bin/
ln -sf ${HOME}/.local/global/bin/global ./global
ln -sf ${HOME}/.local/global/bin/gtags ./gtags
-
${HOME}/.local/bin/
は一例です。好きな場所を指定してください。 -
${HOME}/.local/global
もビルドで指定したディレクトリに倣ってください。 -
export PATH=${PATH}:${HOME}/.local/bin/
は${HOME}/.bash_profile
にも追記しておくのが通例です。
動作確認
-
global --version
とgtags --version
を実行した結果が以下のようになればOKです。
$ global --version
global (Global) 6.6.8
Powered by Berkeley DB 1.85.
Copyright (c) 1996-2021 Tama Communications Corporation
License GPLv3+: GNU GPL version 3 or later <http://www.gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ gtags --version
gtags (Global) 6.6.8
Powered by Berkeley DB 1.85.
Copyright (c) 1996-2021 Tama Communications Corporation
License GPLv3+: GNU GPL version 3 or later <http://www.gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$
デフォルトのパーサをpygmentsに変更
cp ${HOME}/.local/global/share/gtags/gtags.conf ${HOME}/.globalrc
vim ${HOME}/.globalrc
-
${HOME}/.local/global
はビルドで指定したディレクトリに倣ってください。 -
vim ${HOME}/.globalrc
で以下のように編集してください。
# Please refer to gtags.conf(5) for details.
#
default:\
:tc=native:
↓
# Please refer to gtags.conf(5) for details.
#
default:\
:tc=pygments:
- GNU Globalの対応言語はデフォルトでは5種類(C, Yacc, Java, PHP4 and assembly)ですが、上記を行うことで、C#,Python,Ruby,Fortran,Perl,Verilogなどにも対応できます。
vimの設定
vimプラグインの導入
mkdir -p ~/.vim/plugin
cp -f ${INSTALL_DIR}/share/gtags/gtags.vim ~/.vim/plugin/
キーバインドの設定
cat << EOF >> ${HOME}/.vimrc
"// -- GNU Global ----
" Ctrl + h カレントバッファのオブジェクト一覧をvimのquickfixウィンドウに表示
" Ctrl + n quickfixウィンドウの一覧の次候補へ移動
" Ctrl + p quickfixウィンドウの一覧の前候補へ移動
" Ctrl + m 関数の定義<->参照 相互ジャンプ
" Ctrl + u 関数の参照にジャンプ
" Ctrl + g カーソル下のkeywordでgrep
" Ctrl + k 続けてkeywordを入力しgrep
" Ctrl + o ジャンプ元に戻る
map <C-h> :Gtags -f %<CR>
map <C-n> :cn<CR>
map <C-p> :cp<CR>
map <C-m> :GtagsCursor<CR>
map <C-u> :Gtags -r <C-r><C-w><CR>
map <C-g> :Gtags -g <C-r><C-w><CR>
map <C-k> :Gtags -g
EOF
動作確認
一例として、今回インストールしたGNU Globalのソースコードを題材に動作確認します。
タグの生成
cd /tmp/global-6.6.8/
gtags
-
GPATH
,GTAGS
,GRTAGS
というファイルが生成されるはずです。
$ ls -t
★GRTAGS★ globash libparser config.h gtags.conf configure head.in Doxyfile.in README.PATCHES geco.rc vim74-gtags-cscope.patch depcomp
★GPATH★ htags libutil script Makefile aclocal.m4 AUTHORS FAQ acinclude.m4 gtags-cscope.vim ltmain.sh install-sh
★GTAGS★ gtags libglibc doc config.status BUILD_TOOLS COPYING LICENSE configure.ac gtags.pl INSTALL missing
global gozilla config.log htags-server m4 THANKS COPYING.LIB Makefile.am convert.pl gtags.vim compile
libdb plugin-factory libtool htags-refkit Makefile.in gtags.conf.in ChangeLog NEWS elvis-2.2_0.patch mainpage.dox config.guess
gtags-cscope libltdl stamp-h1 Doxyfile config-h.in gtags.el DONORS README elvis.rc reconf.sh config.sub
$
vimで動作確認
- 一例として
./global/global.c
をvimで開いてみます。
vim ./global/global.c
# vimで./global/global.cを開けたら、Ctrl + hを押下
参考にさせていただいたWebページ
- http://blog.matsumoto-r.jp/?p=2369
- https://mickey-happygolucky.hatenablog.com/entry/2019/04/01/115817
- https://www.tamacom.com/handbook/index.html
- https://qiita.com/sakaia/items/c4a11c4e2e43ae3b4d97
- https://qiita.com/yoshizow/items/9cc0236ac0249e0638ff
- https://qiita.com/suzutsuki0220/items/1e755fd98e5b12af3e2d