现在我正在处理一个文件,它使用了许多类、方法、函数、变量等。是否可以转到所有这些的声明?请,请注意,其中一些声明位于同一文件中,而其他声明位于其他文件中(可能未打开,并且您不知道声明的位置,但它们确实存在)。如果声明位于目录的上一级,会发生什么情况?如果声明位于目录的下一级,又会发生什么情况?
这是根据我们所讨论的编程语言以不同的方式完成的,还是不管语言如何,查找声明的过程都是相同的?
我一直在阅读,似乎解决方案与标签有关。然而,我想知道如何实现这一点(一步一步),特别是考虑到我们正在谈论,在某些情况下,在其他文件中的定义。
我知道这可以用IDE完成,但我想知道有多大的不同,这可以实现与Vim。
我只有一个新安装的Vim。我还没有安装任何插件,但愿意这样做,如果它是必要的。也许这可以做到没有插件和有插件。
提前感谢!
3条答案
按热度按时间pieyvz9o1#
设置 tags 并不困难,尽管(像Vim中的大多数事情一样)与IDE相比它不是自动的。
1.首先,你需要
ctags
工具,2022年最常用的是Universal Ctags; 2013年,它被命名为“Exuberant Ctags”,发现于ctags.sourceforge.net。1.接下来,您需要为项目中的所有文件创建一个 *tags数据库 *(文件名为
tags
)。这通常通过从项目根目录运行ctags -R .
来完成(也可以在Vim中通过:!ctags ...
运行)。Exuberant Ctags支持41 languages,您甚至可以通过正则表达式扩展它。1.最后,需要配置Vim来获取 *tags数据库 *。使用
:set tags=./tags;
,它将在文件的目录中向上搜索到根目录。如果您有特定的全局包含目录,您可以添加这些目录。1.这样,您就可以开始使用Vim的标签功能,如
<C-]>
和:tag
。您需要定期更新 * 标签数据库 *;存在插件(如easytags.vim; 2022警告:未维护,但仍在工作),它可以自动为您完成这些工作。
pw9qyyiw2#
您可以尝试
gd
,它转到本地声明,对于更强大的“转到定义”,您可能希望尝试Ingo建议的tags
。628mspwn3#
我使用了you complete me (ycm) plugin,它是
用于Vim快速、随键入的模糊搜索代码完成引擎
它可以与一堆语言一起工作,功能非常强大。查看本节了解如何在您的系统上安装它。
例如,在Java Maven项目中使用它时,从包含
pom.xml
文件的文件夹中打开所需的文件,插件将扫描所有文件和依赖项。我在
~/.vimrc
中确实有以下键Map,以方便使用您请求的功能:假设您的
<leader>
Map到,
,并且let mapleader = ","
与我的示例相同,则可以使用以下命令:,jd
转到定义或声明,ji
转到实施,jr
转到参考Ctrl+n
/Ctrl+p
在弹出的列表中下移/上移以进行自动补全