如何使用 Vim 为互连的非代码文本创建自己的标记文件?

如何使用 Vim 为互连的非代码文本创建自己的标记文件?

我正在 vim 中编写大量相互关联的非代码文本,并且我想生成自己的标签以便与 vim 标记一起使用。

例如,有一个关于“foo”的文件,理想情况下,每当我编辑文件“bar”和“baz”并且出现单词“foo”时,我希望能够按 ^] 并跳转到 foo 文件,然后按 ^T 并跳回到我所在的位置。

有什么方法可以让我创建自己的标记文件,其中单词“foo”指向文件“foo”等等?我检查过的每个来源都只是解释了如何使用 ctags 为世界上每种编程语言生成标记,但我只想能够创建自己的简单标记文件。

答案1

如果我理解正确的话(这是大写的“如果”),你正在寻找的是基本的 vim 帮助功能。你定义一个标签 (一些词) 很多跳跃点(|jumppoint|)就这样。

我不想说太多细节,我强烈建议你浏览一下

:help tags

帮助文件。它会解释很多。我有一段时间没这样做了,但基本上就是这样。您需要定义标签(**),然后通过以下方式将它们引入 vim 的标签系统:帮助标签命令。之后,不要移动它们,当使用跳跃点时,它会通过前面提到的 Ctrl-] 和 T 引导你到达它们。

ctags 之类的东西不应该让您担心...这是完全 vim 的功能,它们与它无关(只有当代码进入时它们才会出现...即使在那时,在某些情况下,如果您愿意做一些体力劳动,它们也可以避免)。

答案2

:help tags-file-format

会给你一些关于如何编写标签文件的提示。但你基本上需要这样的几行:

tagname TAB tagfile TAB location

地点可以是任何 Ex 命令;它可以是行号,但通常是一个搜索模式,如 /\<foo\>/或,/^Where is foo?$/这样每次编辑文件时不需要重新生成标签。

答案3

我一直想用 vim 帮助中的标签功能编写一些文档,但我在网上找不到任何简单而具体的解决方案。因此,对于目前可能正在寻找快速解决方案的任何人,我将分享我找到的内容。

最快的启动和运行方式:

假设您正在一个空文件夹中工作。

如果您创建如下文件 test.txt:

|topic1|
*topic1*

然后运行:

:helptags ./

Vim 将在当前目录 (./) 中生成一个文件 (标签),让你可以从 |topic1| 跳转 (ctrl+]) 到 *topic1*

如果你打开标签文件,你会看到它的简单性:

topic1   test.txt    /*topic1*

格式:

[key word][TAB][file][TAB][command]

您可以向此文件添加其他标签,它们将立即起作用。

当然,标签最棒的地方在于它能够跳转到其他文件中的定义,这可以通过更改标签文件中的 [file] 参数来实现。同样,您需要在父文件中有一个 |tag|,在子文件中有一个 *tag* 才能使其工作。

如果标签文件名为“tags”,并且随后在 vim 中运行 :helptags ./,那么从头开始编写标签文件似乎也可以正常工作。

笔记:

正如其他人在这篇文章中提到的,:help 是你的朋友。如果你喜欢 vim,你应该花一些时间翻阅手册,所有内容都有很好的文档记录。如果你不喜欢 vim,你仍然可以使用手册进行快速搜索。根据我的经验,我通常可以通过手册页找到解决方案,而不是在线搜索。只需记住以下几点:

/

开始搜索

ctrl+]

跳转到文件/定义

ctrl+o

跳回

当你打开 :help 时,也会显示这些基本的导航命令

答案4

一种简单的标签格式,适用于几乎任何版本的 vi/vim,并且可以轻松地手动创建/编辑(仍然使用 vim),标签名称、文件路径和行号,以制表符分隔。

我使用 php 命令行脚本来扫描我的代码并生成具有这种格式的标签,将行:“$tagname\t$filepath\t$lineNo\n”; 打印到标签文件。

相关内容