|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 267|回復: 0
打印 上一主題 下一主題

vim 的 tags 模块 与 ctags

[複製鏈接]

56

主題

0

好友

475

積分

中學生

Rank: 3Rank: 3

  • TA的每日心情

    2024-3-15 19:20
  • 簽到天數: 191 天

    [LV.7]常住居民III

    推廣值
    0
    貢獻值
    0
    金錢
    179
    威望
    475
    主題
    56
    樓主
    發表於 2014-7-18 20:51:02
    vim 的 tags 模块 与 ctags
    1. 概述
    一般来说,在代码中跳转,离不开 ctags。
    实际上,vim 中代码跳转是由 vim tags 模块完成的,tags 模块依赖于 tags 文件。
    ctags(Generate tag files for source code) 是产生 tags 文件的。
    tags 文件只包含了函数、类、变量的定义的信息,而没有包含使用信息。
    如果要知道一个函数都在什么地方使用过,需要使用 cscope。
    2. tags 文件的生成与更新
    ctags 默认是不会自动生成 ctags 文件的,常用的 3 个生成命令如下:
    $ ctags *$ ctags -R$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
    • -R: 循环生成子目录的 tags
    • *: 当前目录下的所有文件,不递归
    • –c++-kinds=+px : 记录 c++ 文件中的函数声明和各种外部和前向声明
    • –fields=+iaS : ctags 要求描述的信息,其中i表示如果有继承,则标识出父类;a 表示如果元素是类成员的话,要标明其调用权限(即是 public 还是 private);S 表示如果是函数,则标识函数的 signature。
    • –extra=+q: 强制要求ctags做如下操作—如果某个语法元素是类的一个成员,ctags默认会给其记录一行,可以要求ctags对同一个语法元素再记一行,这样可以保证在VIM中多个同名函数可以通过路径不同来区分。
    3. 常见功能与快捷键
    详细的说明,见 vim 的 tags 帮助文档。
    :help tags
    命令、快捷键、功能描述如下:
    • CTRL+]        :tag tagname     跳转到定义处
    • CTRL-W ]     :stag tagname    新窗口中打开并跳转到定义处。split 后执行  tag tagname
    • CTRL+T                               CTRL+] 的反操作,向回跳转。类似 CTRL+o,区别在于,CTRL+o 的跳转不局限于 CTRL+] 构成的调用树。
    对于存在多个匹配的 tag(如, 在 .h 和  .cpp 中都声明或者定义的方法名):
    • :ts[elect]                 列出所有匹配的 tag
    • :[count]tp[revious]  跳转至前 count 个 tag 处。
    • :[count]tn[ext]        跳转至后 count 个 tag 处。
    4. Vim + ctags 配置set tags=tags;  " ; 不可省略,表示若当前目录中不存在tags, 则在父目录中寻找。map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>



    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-5-17 05:36 , Processed in 0.026026 second(s), 25 queries , Gzip On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部