vim ctags使用帮助
1、 $ ctags -R -c-types=+px ($ 为Linux系统Shell提示符)
2、$ vi -t tag (请把tag替换为您欲查找的变量或函数名)
3、:ts (ts 助记字:tags list, “:”开头的命令为VI中命令行模式命令)
4、:tp (tp 助记字:tags preview)―此命令不常用,可以不用记
5、:tn (tn 助记字:tags next) ―此命令不常用,可以不用记
6、 :tag /tag(请把tag替换为您欲查找的变量或函数名)
7、Ctrl + ] 到函数定义或声明 [ + tab
8、Ctrl + T 返回
9、[{ 转到上一个位于第一列的"{"
10、}] 转到下一个位于第一列的”{”
11、{ 转到上一个空行
12、} 转到下一个空行
13、gd 转到当前光标所指的局部变量的定义,gf打开头文件
14、* 转到当前光标所指的单词下一次出现的地方
15、# 转到当前光标所指的单词上一次出现的地方
16、Ctrl+i 前进 Ctrl+o 返回
17、ctrl+z将vi转入后台,fg可返回vi
注意:运行vim的时候,必须在“tags”文件所在的目录下运行。否则,运行vim的时候还要用“:settags=” 命令设定“tags”文件的路径,这样vim才能找到“tags”文件。在完成编码时,可以手工删掉tags文件(帚把不到,灰尘不会自己跑掉^_^)。
注:另外,在windows下,有gvim可以使用。而且,也可以使用ctags。这个ctags可以从其它的软件包的目录里边copy出来。比如ultraedit就带了一个ctags程序。你直接将其copy到gvim的目录下的vim目录下就可以了。
例子:
ctags -R -languages=c++ -langmap=c++:+.inl -h +.inl -c++-kinds=+px -fields=+aiKSz -extra=+q -exclude=lex.yy.cc -exclude=copy_lex.yy.cc
命令太长了,折成两行了,可以考虑把命令的各个参数写到文件里去了(具体做法就不谈了)。
1.
-R
表示扫描当前目录及所有子目录(递归向下)中的源文件。并不是所有文件ctags都会扫描,如果用户没有特别指明,则ctags根据文件的扩展名来决定是否要扫描该文件――如果ctags可以根据文件的扩展名可以判断出该文件所使用的语言,则ctags会扫描该文件。
2.
-languages=c++
只扫描文件内容判定为c++的文件――即ctags观察文件扩展名,如果扩展名对应c++,则扫描该文件。反之如果某个文件叫aaa.py(python文件),则该文件不会被扫描。
3.
-langmap=c++:+.inl
告知ctags,以inl为扩展名的文件是c++语言写的,在加之上述2中的选项,即要求ctags以c++语法扫描以inl为扩展名的文件。
4.
-h +.inl
告知ctags,把以inl为扩展名的文件看作是头文件的一种(inl文件中放的是inline函数的定义,本来就是为了被include的)。这样ctags在扫描inl文件时,就算里面有static的全局变量,ctags在记录时也不会标明说该变量是局限于本文件的(见第一节描述)。
5.
-c++-kinds=+px
记录类型为函数声明和前向声明的语法元素(见第三节)。
6.
-fields=+aiKSz
控制记录的内容(见第四节)。
7.
-extra=+q
让ctags额外记录一些东西(见第四、五节)。
8.
-exclude=lex.yy.cc -exclude=copy_lex.yy.cc
告知ctags不要扫描名字是这样的文件。还可以控制ctags不要扫描指定目录,这里就不细说了。
建议继续学习:
- vim几个小技巧(批量替换,列编辑) (阅读:35894)
- 简明Vim练级攻略 (阅读:20698)
- Vim下的代码自动补全和代码跳转阅读 (阅读:14335)
- 为什么要用 Emacs/Vim,而不是任何其他编辑器 (阅读:12129)
- 在vim(gvim)中运行终端(对,你没有看错,我也没有写反) (阅读:9334)
- vim入门,进阶与折腾 (阅读:9149)
- 让vim在终端下的配色亮起来! (阅读:8559)
- 最近总结的一些技巧(vim,python,svn,fiddler等) (阅读:7029)
- vim的复制粘贴小结 (阅读:6465)
- Vim 中截取部分内容保存到其他文件 (阅读:6319)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:wl1011 来源: 一个搞技术的家伙
- 标签: ctags vim
- 发布时间:2011-09-26 23:23:26
- [67] Go Reflect 性能
- [67] Oracle MTS模式下 进程地址与会话信
- [67] 如何拿下简短的域名
- [61] IOS安全–浅谈关于IOS加固的几种方法
- [60] 图书馆的世界纪录
- [59] android 开发入门
- [59] 【社会化设计】自我(self)部分――欢迎区
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [47] 界面设计速成