前言
平时在写代码和阅读代码的时候,一个优秀的代码间跳转的工具是必不可少的。
下面就来介绍一下gtags这个神器。
常用的补全tag
- ctags -> vim原生tag
- etags -> emacs原生tag
- gtags ->GNU 的项目,功能最为强大
如果想更多了解一下它们的区别可以看一下这个帖子
https://emacs-china.org/t/ctags-gtags/1756
安装
使用包管理器安装global 这个包。
Arch 上的命令是
pacman -S global
安装完成后,只支持 asm,c,c++ 等少数几个语言。
再安装这两个包就可以支持所有语言和全部功能了。
pacman -S ctags python-pygments
配置
配置很简单
直接在spacmacs layer 里加这么一行,默认启动 gtags
(gtags :variables gtags-enable-by-default t)
使用
首先进入到项目根目录,
终端下直接输入 gtags 或者 dired mode 下 按 SPC g c 创建 gtags。
按g刷新后,可以看到多了GPATH,GRATAGS,GTAGS这三个文件。
这三个gtags的 索引文件。
这样就能顺利的使用gtags来跳转代码了。
常用命令
我把SPC设 为 , 键
Command | Default Key Binding | Function |
---|---|---|
Helm-gtags-create-tags | , g c | 在当前目录下创建gtags |
Helm-gtags-select-path | , m g f | 当前项目查找文件 |
Jump-to-definition | , g g | 跳转定义 |
Helm-gtags-dwim-other-windows | , g G | 跳转定义(开新窗口) |
Helm-gtags-find-tag | , g d | 跳转标签 |
Helm-gtags-find-tag-other-window | , g D | 跳转标签(开新窗口) |
Helm-gtags-find-rtag | , g r | 查找引用 |
Helm-gtags-update-tags | , g u | 更新gtags |
最后附上官方教程
https://github.com/syl20bnr/spacemacs/tree/master/layers/%2Btags/gtags
在emacs 中输入 SPC h SPACE RET gtags 也可以查看