ctags的简单用法

ctags的安装:

注意ctags有两个,一种是Emacs版本的,另一种是vim版本的。我们通常网上看到的资料是针对vim版本的,结合vim一起使用的。
在ubuntu下安装命令:

$sudo apt-get install exuberant-ctags


在vim编辑器内(命令模式下),ctags的几个简单操作符如下:

:ta xxx 在工程中查找 xxx 字符

Ctrl + ]
找到光标所在位置的标签定义的地方。

Ctrl + T
回到跳转之前的标签处。

Ctrl + O
退回原来的地方。

[I
查找全局标识符. Vim会列出它所找出的匹配行,不仅在当前文件内查找,还会在所有的包含文件中查找。

[{
转到上一个位于第一列的”{“。(前提是 “{” 和 “}” 都在第一列。)

]}
转到下一个位于第一列的”}”。

在括号内移动,“[(” 和 “])” 命令”[}” 和 “]}” 类似,只不过它们适用于 () 对而不是 {} 对。

{
转到上一个空行。

}
转到下一个空行。

gd
转到当前光标所指的局部变量的定义(只在当前函数内查找)。

gD
在当前文件中查找并跳转到光标处单词被首次使用的地方

*
转到当前光标所指的单词下一次出现的地方。

#
转到当前光标所指的单词上一次出现的地方。

[/
移动到一个注释的开始;

]/
移动到注释的结尾。(这只对 /* - */ 注释有效。)



打开一个预览窗口来显示函数 “write_char”:

:ptag write_char

Vim 会打开一个窗口,跳转到 “write_char” 标签。然后它会回到原来的位置。

使用 CTRL-W 命令可以在两个窗口之间来回切换。

用下面的命令关闭预览窗口

:pclose




Note:

[http://blog.csdn.net/garfieldswimming/article/details/8727481]
当运行下列命令时,
$ctags -R .
error:
ctags: skipping ***: it is not a regular file.

出错了,类似这个问题可能你运行的ctags 不是 Exuberant Ctags,而是 GNU Emacs etags,

可以输入下列命令:

$ctags --version 
ctags (GNU Emacs 23.1)
copyright (C) 2009 Free Software Foundation,Inc.
This program is distributed under the terms in ETAGS.README

看到上面ctags (GNU Emacs 23.1),说明当前不是 Exuberant Ctags。

此时,执行man ctags可以看到:

-R,--no-regex
         Don't  do  any more regexp matching on the following files.  May
         be freely intermixed with filenames and the --regex option.

You Could probably generate the tags recursively using shell magic,but you may run into problems down the road if you’re expecting Exuberant Ctags. So the best solution is probably to install the ctags you want instead:

sudo apt-get install exuberant-ctags

另一种可能是

It occurs if you have elvis-tools installed . remove them with something like

$sudo apt-get remove elvis-tools 

and then install exuberant-ctags by

$sudo apt-get install exuberant-ctags


Reference:

[http://fancyxinyu.blog.163.com/blog/static/1823213662012101694049404/]

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...