ctags *.rb
用模式定位关键字,而不是行号。描述标签文件格式的规格文档明确指出,关键字的地址可以是任意的Ex命令。
ctags不采用绝对行号,而是查找命令定位每一处关键字。
用元数据标记关键字
传统的标签文件格式只需有制表符分隔的3组字段构成:关键字、文件名以及定位符。
配置Vim使用ctags
告诉Vim标签文件在哪里
生成标签文件
正如我们在用ctags创建代码库的索引所看到的那样,ctags可以在系统命令行中执行。
通过以下命令,我们可在Vim中直接调用ctags:
:!ctags -R
通过使用以下映射项,能为我们节省不少时间
:nnoremap <f5> :!<ctags> -R<CR>
在每次保存文件时自动保存执行ctags
:autocmd BufWritePost * call system(“tags -R")
通过版本控制工具的回调机制自动执行ctags
《Effortless Ctags with Git》一文中,他为我们讲解了如何为post-commit、post-merge以及post-checkout等事件简历回调机制。该方案的优势在于实现了全局回调功能,通过它,你将不必为系统中的每个代码仓库单独进行配置。
跳到关键词的定义处:
<C-]>,光标将会从当前所在的关键字跳转到它的定义处。
<C-t>命令会充当“后退按钮”的角色。:tnext :first :tlast
总结了在使用标签进行代码浏览时的可用命令
命令 | 用途 |
<C-]> | 跳转到匹配当前光标所在关键字的第一处标签 |
g<C-]> | 如果有多处标签可以匹配当前光标所在的关键字,提示用户指定一处进行跳转。如果只有一处匹配,则不会提示,直接进行跳转 |
:tag {keyword} | 跳转到匹配{keyword|的多处标签中指定一处进行跳转。如果只有一处匹配,则不会提示,直接进行跳转。 |
:pop 或 <C-t> | 反向遍历标签历史 |
:tag | 正向遍历标签历史 |
:tnext | 跳转到下一处匹配标签 |
:tprev | 跳转到上一处匹配标签 |
:tfirst | 跳转到第一处匹配的标签 |
:tlast | 跳转到最后一处匹配的标签 |
:tselect | 提示用户从标签中匹配列表中选择一处进行跳转 |
浏览Quickfix列表的命令
命令 | 用途 |
:cnext | 跳转到下一项 |
:cprev | 跳转到上一项 |
:cfirst | 跳转到第一项 |
:clast | 跳转到最后一项 |
:cnfile | 跳转到下一个文件中的第一项 |
:cpfile | 跳转到上一个文件中的最后一项 |
:cc N | 跳转到第n项 |
:copen | 打开quickfix |
:cclose | 关闭quickfix窗口 |