ctags是什么
用于为源码工程中的变量,函数等各种标识符建立索引关系的工具软件,windows中就是ctags.exe。很明显,这个对于查看代码非常好(比如sourceInsight等代码阅读软件),但是代码编辑时候的自动补全就不够了,还需其它工具软件的协同支持,比如cscope等支持。但是,更加智能好用的代码补全等功能,还是用clang,ccls等专业的语言服务器工具吧 (可能性能比ctags差一些,但是功能非常全)C/C++语言的服务器LS调研 (Language Server 实现代码索引 跳转定义 智能提示等功能)_标biao的博客-CSDN博客
ctags发展过程
最初的ctag(也叫传统ctags)非常简单,大多数 Unix 系统都能找到。只支持 C。只有基本的功能。
然后Exuberant Ctags (e-ctags) 改进了传统ctags的多语言支持,用户定义通过正则表达式搜索的新语言的能力。但是该项目,已经不更新了。官网:Exuberant Ctags 下载:Exuberant Ctags download | SourceForge.net
然后Universal Ctags(u-tags)的目标是继续开发 Exuberant Ctags,进一步做了发展,但是好像改动也不大。官网:Home · Universal Ctags 下载:Releases · universal-ctags/ctags-win32 · GitHub
所以现在我们下载到的ctags.exe,其实指的就是u-tags了,只是我们习惯简称了。比如我们可以看看版本信息:
ctags的命令行选项官网详细介绍:ctags — Universal Ctags 0.3.0 documentation
ctags相关名称
ctags可以在vim,emacs等编辑器(这两编辑器在Linux中使用最为广泛)中使用,ctags在emacs中叫做etags。
还有个叫做RTags的,利用了clang基础库,使得对c++的索引效果好很多,还能实时进行,但是仍然没有具备代码补全等语言服务器的功能。估计比ctags更好用一些(对于c++语言而言),但是应该复杂很多了,性能也下降了。这个工具知道的人少,应该用得不广泛。
参考博客
关于具体的一些使用,除了看官网,还可以看看这些博客
exuberant ctags、ctags、ptags等标签工具介绍_白 杨的博客-CSDN博客
VIM/EMACS编辑器及cscope/ctags/etags | 三言
VIM 利用ctags实现自动补齐功能-bluedrum-ChinaUnix博客