美文网首页
如何使用ctags打tags

如何使用ctags打tags

作者: 小胖_20c7 | 来源:发表于2019-07-18 11:29 被阅读0次

tags有什么用?
    我知道的用途只有两个。一个是根据tag来跳转,一个是根据tag来自动补齐

关于自动补齐的一些说明?
    tags的自动补齐实际上是通过vim的omni completion(即ctrl-x,ctrl-o)来实现的。现在还有一种更强大的补齐方式(即clang),这种通过User defined completion(即ctrl-x,ctrl-u)来实现的

两种补齐方式官方文档如下:
  https://www.vim.org/scripts/script.php?script_id=2358
  https://www.vim.org/scripts/script.php?script_id=3302

下面重点说下ctags的常用选项
--list-maps(列出所有语言和文件后缀的映射关系,即什么样的文件被认为是什么样的语言)
--list-kinds=c(列出指定语言的所有tag类型。注意,有些类型默认是关闭的)

--links=yes(沿着软连接走下去,默认yes,不用理它)
--file-scope=yes(文件范围的tag也打进去,默认yes,不用理它)

--langmap=c:+.h(改变默认的语言映射关系。.h默认映射到c++)
--languages=c,c++(只对特定语言的文件打tag。就是说你输入的这些文件,如果被判定不是指定语言,是不会进行处理的)

--c-kinds=+p(开启c语言的函数原型tag类型。自动补齐需要)
--c++-kinds=+p(开启c++语言的函数原型tag类型。自动补齐需要)

--fields=+iaS(每个tag,给出更详细的信息。自动补齐需要)
--extra=+q(即qualified fileds,也打上tag。自动补齐需要)

-I __THROW -I __attribute_pure__ -I __nonnull -I __attribute__(忽略这些关键字,不然有些c函数没法识别)

--exclude=c++(打tag的时候,忽略指定的目录或者文件)
-L project.files(把要打tag的文件列表写入project.files文件)  

-f ~/mytags/cpp(指定tags的文件名称)
-R(对目录递归执行)
标准c++ tags
1 下载cpp_src源码(https://www.vim.org/scripts/script.php?script_id=2358)
2 ctags --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -R -f ~/mytags/cpp ~/cpp_src
标准c tags
ctags -I __THROW -I __attribute_pure__ -I __nonnull -I __attribute__ \
      --langmap=c:+.h --languages=c \
      --c-kinds=+p --fields=+iaS --extra=+q \
      -f ~/mytags/systags \
      /usr/include/*.h  \
      /usr/include/sys/*.h
      /usr/include/netinet/*.h
头文件目录,根据需求自己加。我不喜欢用-R /usr/include(没用的符号太多)
也可以选择用-L tmp.txt这种方式,下面是自动生成tmp.txt的方法
ls -lh /usr/include | grep '^d' | awk '{print $9}' | sed -E 's#(.*)#/usr/include/&/*.h#' | sed '1i /usr/include/*.h' > tmp.txt
Project tags
ctags --c-kinds=+p --c++-kinds=+p --fields=+iaS --extra=+q --languages=c,c++ -R ./

相关文章

  • 如何使用ctags打tags

    tags有什么用?    我知道的用途只有两个。一个是根据tag来跳转,一个是根据tag来自动补齐 关于自动补齐的...

  • VIM + ctags + cscope + taglist 阅

    ctags ctags -R (来生成tags 文件,kernel 源码可以用make tags) :set ta...

  • ctags 处理 PHP trait

    场景 使用 ctags 生成 PHP 的 tags,发现对 trait 关键字是没有进行处理的. 方案 使用 --...

  • ctags生成tags文件

    ctags生成tags文件 安装ctags之后,在项目目录下执行 如果要添加系统函数,执行下面的命令,可以根据自己...

  • Ubuntu18.04 安装 ctags

    安装 universal-ctags 创建 ctags 链接 在vim中配置ctags 使用ctags 然后在vi...

  • 12.vim插件命令总结

    自动跳转功能 $ cd /home/wooin/vim71 $ ctags -R vim里 :set tags=/...

  • Vim 配置

    插件 ctags安装:sudo apt-get install ctags使用:ctags -R 对当前目录所有文...

  • Vim插件(Ctags+Taglist+NERDTree)

    一、安装使用Ctags 1)从http://ctags.sourceforge.net/下载源代码包后,解压缩生成...

  • vim之函数跳转

    从声明跳转到定义 首先在程序根目录下执行: 就会在根目录下生成个tags文件、如果没有安装ctags,根据提示安装...

  • MAC SublimeText看代码实现

    Mac OSX下Sublime Text配置使用Ctags实现代码跳转

网友评论

      本文标题:如何使用ctags打tags

      本文链接:https://www.haomeiwen.com/subject/ndvklctx.html