<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Vim on Jsj&#39;s Blog</title>
    <link>https://hahamaker.top/tags/vim/</link>
    <description>Recent content in Vim on Jsj&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 04 Aug 2024 00:18:07 +0800</lastBuildDate>
    <atom:link href="https://hahamaker.top/tags/vim/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Ctags Usage</title>
      <link>https://hahamaker.top/posts/ctags_usage/</link>
      <pubDate>Sun, 04 Aug 2024 00:18:07 +0800</pubDate>
      <guid>https://hahamaker.top/posts/ctags_usage/</guid>
      <description>&lt;p&gt;&lt;code&gt;ctags gun/global&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;c-and-c&#34;&gt;C and C++&lt;/h2&gt;
&lt;h3 id=&#34;1-通常使用-ctags&#34;&gt;1. 通常使用 ctags&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ctags -R . -f .tags&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-R&lt;/code&gt; 从当前目录递归开始生成 ctags 索引&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.&lt;/code&gt; 当前目录&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-f&lt;/code&gt; &lt;code&gt;-o&lt;/code&gt; 指定生成的文件名&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ctags -R --c-kinds=+p --fields=+iaS --extra=+q . -f .tags&lt;/code&gt; 获取更多的信息&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;2-一些-ctags-基础参数&#34;&gt;2. 一些 ctags 基础参数&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;ctags 支持多种语言的索引
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ctags --list-maps&lt;/code&gt; 查看支持的语言种类&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ctags 支持很多语义但并不是默认都开启的
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ctags --list-kinds&lt;/code&gt; 查看所有语言支持的语义及默认开启状态(后面有 &lt;code&gt;off&lt;/code&gt; 表示默认没有开启)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ctags --list-kinds={lang}&lt;/code&gt; 查看{lang}语言支持的语义及开启状态&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;ctags --{lang}-kinds=+px&lt;/code&gt; 来开启默认不支持的语义&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ctags --langmap={lang}:+.inl&lt;/code&gt; 可以指定某种扩展名也为该 lang 的源文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ctags -h +.inc&lt;/code&gt; 指定 &lt;code&gt;.inc&lt;/code&gt; 文件也为头文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ctags --fields=+aiKSz&lt;/code&gt; 如何描述语法元素
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;a&lt;/code&gt; 表示如果是类的成员, 要标明其 access 属性(即是 public 的还是 private 的)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;i&lt;/code&gt; 表示如果有继承, 要标明父类&lt;/li&gt;
&lt;li&gt;&lt;code&gt;S&lt;/code&gt; 表示如果是函数, 要标明函数的 signature&lt;/li&gt;
&lt;li&gt;&lt;code&gt;K&lt;/code&gt; 表示要显示语法元素类型的全称&lt;/li&gt;
&lt;li&gt;&lt;code&gt;z&lt;/code&gt; 表示在显示语法元素的类型时, 使用格式 kind:type&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ctags --extras=+q&lt;/code&gt; 要求 ctags 记录全名(类和函数名), 可以更精确的定位&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ctags --exclude=lex.yy.cc&lt;/code&gt; 不要扫描某些目录或文件&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;3-ctags-使用&#34;&gt;3. ctags 使用&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;使用&lt;code&gt;ctags -R --c-kinds=+p --fields=+iaS --extras=+q /usr/include&lt;/code&gt; 将可以创建外部的跳转, 但会使用很长的时间, 得到的文件一般也很大&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;可以只创建当前文件包含的头文件的索引&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
  </channel>
</rss>
