

vimでgnu globalを使って定義元や参照先に飛びたいなと思っています。  
現在はmacとdebian,ubuntuをそれぞれ使っており、今の所macの方では問題なく動いています。  
それで、debianとubuntuの方にも同様にgnu globalを導入しようとしているのですが  
GTAGSがうまく生成されません。ファイル自体はGTAGS GPATH
GRTAGSと生成されるのですが、GTAGSの中身が空っぽ（正確には１行だけ）で、ターミナルの方でglobalコマンド打っても、vimの方でgtags.vimを使って:Gtags
-f %コマンドを打ってみても動かない状況です。  
そもそも正常に生成したGTAGSには各種タグ情報が含まれているため１行ってのはありえないはずです。  
-vオプションを使ったところ全ファイルからタグ情報を抽出してはいるようなんですが、どうにもうまく行きません。

インストール手段についてですが  
macではhomebrewを使い

  * brew install global --with-exuberant-ctags --with-pygments

コマンドでインストールしたものが動きましたので  
まず、linuxbrewを使ってインストールしてみました。しかし動かず

  * apt install global

（この際pyenvで入れたpython2.7とpython3.6.3にpygmentsをインストール、さらにexuberant-
ctagsをあらかじめaptでインストール)しましたがそれも同様に動きませんでした。バージョンはglobalが6.5.7でgtagsが6.5.6でした。  
上記２つの手段でも動かなかったため、global-6.4とglobal-6.5,global-6.5.7をそれぞれソースコードからビルドしてみましたがどれも動きませんでした。

ここで一つ実験してみました  
macの方で作った正常なGTAGS,GPATH,GRTAGSファイルがあるフォルダで  
parallelsを使いdebianからそのフォルダにアクセス、正常なG*ファイルがあるとうまく動くのか試したところ  
ターミナル上ではglobal {method名}で対象のファイル名が表示されました。  
しかしvim上ではうまく行きませんでした。  
:Gtags -f %と打ってみると

  * Error: global command failed. command line: global --result=ctags-mod -qf 'XXX'

というエラー  
:!global {method名}と打ってみると

  * global: directory '/home/{ユーザ名}/.cache/tags_dir/{hoge}' not found.

とエラーが出ました。{hoge}は:!globalコマンドを打ったファイルがあるディレクトリへのフルパスから/をすべて抜き取ったものです。

gtagsに関するプラグインは

  * gtags.vim(version 0.6.8)
  * jsfaint/gen_tags.vim
  * ozelentok/denite-gtags

を使っています。

色々ググってはみましたがそもそもgnu globalに関する情報が少なく、再現性があるのかすら不明な状況です。  
それともし他におすすめのタグジャンプ関係のプラグイン等ありましたら教えていただけると嬉しいです。

よろしくお願いします。


CC BY-SA 3.0
2017-10-15T10:30:26.023
38722
2018-07-01T12:31:19.837
2017-10-16T07:17:45.630
20491
20491
question
ubuntu vim debian
gnu globalがdebian, ubuntuで動かない


自己解決

:!globalをしてみたところ、本来gen_tags.vimで読み込まれるであろう~/.cache/tags_dir/{hoge}の中身がありませんとの表示  
この時点でgen_tags.vimがglobalに何らかの細工をしていることは明白になったので、gen_tags.vimのプラグインを読み込まないように設定  
そして.globalrcを共有せずにインストールしたgtagsのgtags.confを持ってくる  
以上でmacOS,debian共に期待通り動いた

原因は不明


CC BY-SA 3.0
2017-10-16T07:33:22.497
38754
2017-10-16T07:33:22.497
20491
38722
answer