关于ctags的安装及配置等,请参考 Vim:打造Linux程序员的编辑利器(ctags+cscope+taglist+code_complete)。
下面是关于ctags的几个常用快捷键。
注意:
使用ctags时,需要在tags文件所在的目录打开vim。否则会提示类似“E433:No tags file”出错信息。(tags文件,即在代码根目录下运行诸如ctags -R .
命令时生成的代码标记索引文件。)
若在其他目录时打开vim使用ctags,需要在vim中设置tags变量,变量值为tags文件路径。例如: :set tags=....../tags_glibc
打开进入vim后,在vim编辑器内,
在命令模式下输入 :ta pattern 就可以 找到符合pattern的字符位置。(相当于search功能)
Ctrl + ] | 找到光标所在位置的标签定义的地方。 |
---|---|
Ctrl + T | 回到跳转之前的标签处。 |
Ctrl + O | (是字母o,不是数字0) 退回原来的地方。 |
[I | 查找全局标识符. Vim会列出它所找出的匹配行,不仅在当前文件内查找,还会在所有的包含文件中查找。 |
[{ | 转到上一个位于第一列的”{“。(前提是 “{” 和 “}” 都在第一列。) |
]} | 转到下一个位于第一列的”}”。 |
在括号内移动,“[(” 和 “])” 命令”[}” 和 “]}” 类似,只不过它们适用于 () 对而不是 {} 对。
{ | 转到上一个空行。 |
---|---|
} | 转到下一个空行。 |
gd | 转到当前光标所指的局部变量的定义(只在当前函数内查找)。 |
---|---|
gD | 在当前文件中查找并跳转到光标处单词被首次使用的地方。 |
* | 转到当前光标所指的单词下一次出现的地方。 |
# | 转到当前光标所指的单词上一次出现的地方。 |
[/ | 移动到一个注释的开始;(这只对 /* - */ 注释有效。) |
---|---|
]/ | 移动到注释的结尾。(这只对 /* - */ 注释有效。) |
打开一个预览窗口,
来显示函数 “write_char” 的页面内容,使用ptag命令:
:ptag write_char
Vim 会打开一个窗口,跳转到 “write_char” 标签,然后它会回到原来的位置。
使用CTRL-W命令可以在两个窗口间切换,选其中一个窗口作为当前窗口。
用下面的命令关闭预览窗口:
:pclose
Note:
http://blog.csdn.net/garfieldswimming/article/details/8727481
在一个源码根目录下,运行如下命令建立索引时 出错了:
$ ctags -R . ctags: skipping ***: it is not a regular file.
碰到类似这个问题的,其原因可能是因为你运行的ctags 不是 Exuberant Ctags,而是 GNU Emacsetags,
可通过如下命令查看:
$ctags --version ctags (GNU Emacs 23.1) Copyright (C) 2009 Free Software Foundation,Inc. This program is distributed under the terms in ETAGS.README
当你运行man ctags命令时,可以看到-R选项的描述为:
-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
所以,可以通过如下命令安装ctags:
$ sudo apt-get install exuberant-ctags
另一种可能是
It occurs if you have elvis-tools installed . Remove them with something like
你可能安装了elvis-tools,那尝试卸载掉elvis-tools后再安装exuberant-ctags
$ 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/