Ctags和Taglist:将Vim编辑器转换为适用于任何编程语言的源代码浏览器

举报
Tiamo_T 发表于 2021/12/05 08:10:27 2021/12/05
【摘要】 作为程序员或系统管理员,您将不断浏览源代码和 shell 脚本。

作为程序员或系统管理员,您将不断浏览源代码和 shell 脚本。

以下是您在浏览源代码文件时可能会执行的一些典型活动:

  1. 通过指定函数名称导航到函数定义。
  2. 从“函数调用”导航到函数定义。
  3. 再次返回到定义中的函数调用。
  4. 查看函数或变量的原型/签名。
  5. 查看文件中的函数数量等,


在本文中,让我们回顾一下如何使用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 编辑器中的函数浏览器窗口
图: Vim – 源代码标签/函数列表窗口

2. 跳转到源代码中的函数定义

通过单击左侧面板中的函数名称,您将能够转到函数的定义,如下图所示。

跳转到 Vim 编辑器中的函数
图:快速跳转到一个函数定义

除了快速跳转到函数名称之外,您还可以通过单击左侧标签浏览器中的相应值来跳转到类、结构、变量等。

3. 跳转到另一个源文件中的函数定义

当您浏览源文件中的函数并想要转到另一个文件中的函数定义时,您可以使用两种不同的方法来执行此操作。

方法一:

如果您为该文件生成了 ctags,当光标位于函数调用中时,按 CTRL + ] 将带您到函数定义。标签列表窗口会自动显示新打开文件的标签。

方法二:

在同一个 vim 会话中打开另一个文件,这将使用有关该文件的信息更新标签列表窗口。在标签列表窗口中搜索该函数名称,然后通过在标签列表窗口中的该函数名称上按 <CR> 键,您可以转到函数定义。

4. 查看函数或变量的原型/签名。

在标签列表窗口中的函数名或变量名中按'空格',可以在 VIM 状态栏中显示它的原型(函数签名),如下所示。在下面的示例中,单击 Tag 窗口中的 selectDumpableTable 函数并按空格键,这将在底部 Vim 状态栏中显示 selectDumptableTable 函数的函数签名。

Vim 编辑器中的显示函数原型
图:在 Vim 状态栏中显示函数签名

5. 查看源代码文件中函数或变量的总数

在标签列表窗口的标签类型中按'空格',这会显示它的计数。在下面的例子中,当光标在'function'上按空格键时,将显示当前源代码中的函数总数。

在 Vim 编辑器中显示源代码的函数总数
图:显示源代码中可用的函数总数

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。