Ctags和Taglist:将Vim编辑器转换为适用于任何编程语言的源代码浏览器
【摘要】 作为程序员或系统管理员,您将不断浏览源代码和 shell 脚本。
作为程序员或系统管理员,您将不断浏览源代码和 shell 脚本。
以下是您在浏览源代码文件时可能会执行的一些典型活动:
- 通过指定函数名称导航到函数定义。
- 从“函数调用”导航到函数定义。
- 再次返回到定义中的函数调用。
- 查看函数或变量的原型/签名。
- 查看文件中的函数数量等,
在本文中,让我们回顾一下如何使用ctags和taglist 插件在Vim 编辑器中高效地执行上述活动。 本文中提到的使用 Vim 编辑器的技术可用于任何编程语言。
一、Ctags包安装和配置
第一步:安装ctags包
# apt-get install exuberant-ctags
(or)
# rpm -ivh ctags-5.5.4-1.i386.rpm
warning: ctags-5.5.4-1.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:ctags ########################################### [100%]
第 2 步:在源代码上生成 ctags
转到您的源代码所在的目录。在下面的示例中,我将所有 C 编程源代码存储在 ~/src 目录下。
# cd ~/src
# ctags *.c
ctags 命令将创建一个文件名标签,该标签将包含关于 *.c 程序文件的所有必需信息(标签)。以下是 ctags 文件中标签条目的部分输出。
# cat tags
AddAcl dumputils.c /^AddAcl(PQExpBuffer aclbuf, const char *keyword)$/;" f file:
ArchiveEntry pg_backup_archiver.c /^ArchiveEntry(Archive *AHX,$/;" f
AssignDumpId common.c /^AssignDumpId(DumpableObject *dobj)$/;" f
二、Vim 编辑器中 4 个强大的 Ctags 用法
1. 通过使用 :ta 指定函数名称导航到函数定义
在下面的例子中,:ta main 将带你到 mycprogram.c 中的 main 函数定义
# vim mycprogram.c
:ta main
通过使用此功能,您可以通过指定函数名称导航到任何函数定义。
2. 使用 Ctrl + ] 从“函数调用”导航到函数定义
当光标在函数调用下时,按 CTRL + ] 转到函数定义。在以下示例中,当光标位于函数调用 ssh_xcalloc 中时,按 Ctrl + ] 将带您到 ssh_xcalloc 函数定义。
# vim mycprogram.c
av = ssh_xcalloc(argc, sizeof(char *));
注意:如果 ctags 找不到该函数,您将在底部的 vim 状态栏中收到以下消息:E426 tag not found ssh_xcalloc
3. 使用 Ctrl + t 从定义中再次返回到函数调用
按 CTRL + t 这将再次返回到函数调用。
4. 浏览具有相似名称的函数名称列表
在这个例子中, :ta 将转到名称以 get 开头的函数定义,并构建一个列表来导航相关函数。
# vim mycprogram.c
:ta /^get
以下 vim 命令可用于浏览相关功能
- :ts – 显示列表。
- :tn – 转到该列表中的下一个标签。
- :tp – 转到该列表中的上一个标签。
- :tf – 转到列表第一个中的函数。
- :tl – 转到列表最后一个函数。
三、Taglist 插件:作为终极源代码浏览器的 Vim 编辑器
上面的Ctags可能没有给人一种浏览源码的感觉,因为它是由命令驱动的,而不是直观地浏览代码。所以如果你想像在文件浏览器中导航一样浏览源代码,你需要使用 vim taglist 插件,它使 vim 作为源代码浏览器。
“标签列表”插件是 Vim 的源代码浏览器插件,它提供了源代码文件结构的概览,并允许您有效地浏览不同编程语言的源代码文件。
第 1 步:下载 Vim Taglist 插件
从vim.org网站下载,如下所示。
$ cd /usr/src
$ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
第 2 步:安装 TagList Vim 插件
$ mkdir ~/.vim # if the directory does not exist already
$ cd ~/.vim
$ unzip /usr/src/taglist.zip
Archive: /usr/src/taglist.zip
inflating: plugin/taglist.vim
inflating: doc/taglist.txt
第 3 步:在 ~/.vimrc 中启用插件
将以下行添加到 ~/.vimrc 以启用 Vim 编辑器的插件。
$ vim ~/.vimrc
filetype plugin on
先决条件:应安装 ctags 以使用 taglist 插件。但是使用 taglist 插件不需要通过 ctags 命令手动生成标签列表。
四、Taglist Vim 插件的 5 个强大功能
1. 在 Vim 中使用 :TlistOpen 打开标签列表窗口
# vim mycprogram.c
:TlistOpen
在 vim 编辑器中,执行 :TlistOpen 如上图,这将打开带有当前文件标签的标签列表窗口,如下图所示。
图: Vim – 源代码标签/函数列表窗口
2. 跳转到源代码中的函数定义
通过单击左侧面板中的函数名称,您将能够转到函数的定义,如下图所示。
图:快速跳转到一个函数定义
除了快速跳转到函数名称之外,您还可以通过单击左侧标签浏览器中的相应值来跳转到类、结构、变量等。
3. 跳转到另一个源文件中的函数定义
当您浏览源文件中的函数并想要转到另一个文件中的函数定义时,您可以使用两种不同的方法来执行此操作。
方法一:
如果您为该文件生成了 ctags,当光标位于函数调用中时,按 CTRL + ] 将带您到函数定义。标签列表窗口会自动显示新打开文件的标签。
方法二:
在同一个 vim 会话中打开另一个文件,这将使用有关该文件的信息更新标签列表窗口。在标签列表窗口中搜索该函数名称,然后通过在标签列表窗口中的该函数名称上按 <CR> 键,您可以转到函数定义。
4. 查看函数或变量的原型/签名。
在标签列表窗口中的函数名或变量名中按'空格',可以在 VIM 状态栏中显示它的原型(函数签名),如下所示。在下面的示例中,单击 Tag 窗口中的 selectDumpableTable 函数并按空格键,这将在底部 Vim 状态栏中显示 selectDumptableTable 函数的函数签名。
图:在 Vim 状态栏中显示函数签名
5. 查看源代码文件中函数或变量的总数
在标签列表窗口的标签类型中按'空格',这会显示它的计数。在下面的例子中,当光标在'function'上按空格键时,将显示当前源代码中的函数总数。
图:显示源代码中可用的函数总数
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)