文本编辑器和基于文本文件的超链接

6

背景:

看起来,一些文本编辑器和IDE开始在其功能上变得更加“浏览器化”。特别是,其中一个功能是将打开的文本缓冲区中的普通文本视为指向另一个文件、资源甚至可运行命令的超链接。

作为编辑器插件或宏编程

由于这似乎是个好主意,我已经开始编写一些脚本和编辑器插件来实现这种功能,以便文本编辑器的用户可以打开或操作以下样式的链接:

href="c:/files/foobar.txt"                   (click to open file)
href="c:/files/foobar.txt" jumpto="34"       (jump to a line number)
href="c:/files/foobar.txt" find="Lorem"      (jump to 1st line containing word)
href="find_in_files://c:/files" find="Lorem" (show all matching lines)
[[find_in_files://find=Lorem;exten=*.htm*]]  (alternate syntax option)
href="redir://c:/files/feebar.txt"           (replace current edit buffer)
href="run://c:/files/foobar.jpg"             (open in default image editor)
[[run://c:/files/foobar.jpg;runwith=foo.exe]] (alternate syntax option)

问题:

  1. 是否有一种新兴的惯例来形成基于文本的超链接?
  2. 如果有这种东西的惯例,是否有已发布的规范?
  3. 您最喜欢的编辑器/ IDE中是否有此功能的实现?
  4. 是否有一种不使用超链接的备选预先存在的方法来实现这个想法?
  5. 这个功能在“祖宗级”编辑器(Vim、Emacs)中是如何处理的?

更新:

看起来问题可能需要澄清,但事实证明 Emacs Org 模式是我所寻找的一个具体示例,它回答了我的所有问题。


@Roger Pate @Matt:感谢你们的回复。虽然我不同意“问题不存在”的观点。也许我应该说“轻量级标记语言”而不是“纯文本”(尽管人们可以轻易地对此提出异议)。有无数不同的维基引擎,它们都有自己的语法,其中一些遵循已发布的标准。没有一般性的理由认为我在这里所问的内容不能类似。 - dreftymac
6个回答

5

感谢您,接受答案,因为它实际上提供了一个在真实的文本编辑器中所指的具体示例。 - dreftymac
1
+1 表示我看到过的最棒模式,并没有任何克隆。 - Noufal Ibrahim

4

有几个适用于Vim的脚本可以添加超链接和标记。其中最受欢迎的是Viki


3
  • URLs,比如http://example.com/(请注意SO会自动链接它),有时还会带有“www.”前缀,因为这很常见。电子邮件地址是另一个被广泛认可的例子。
    • 但不包括你所说的类似于xml属性的东西。
  • 当然不是;一旦你试图让纯文本遵循某种惯例,你就不再拥有纯文本了。
  • 是的,请参见#5。
  • 是的,请参见#5。
  • 对于编辑器,尤其是程序员编辑器来说,拥有脚本、宏、工具或任何他们想要的东西非常普遍。通常这些不是直接由文件中的文本控制的,但可能使用文件、文件名、选择、光标位置、当前文件的目录等。我相信很多好的程序员会在不经意间使用这些功能。

总的来说,听起来你正在试图解决一个不存在的问题。


@Roger Pate //当然不是;一旦你尝试让纯文本遵循某些约定,它就不再是纯文本了// 不确定这是指什么。如果这意味着“纯文本”是“格式化文本”的错误用词,那么我们可以重新召开会议,以相互理解这个错误用词可以被替换为“能够在标准文本编辑器中修改”。XML、YAML和JSON就是OP中所指的例子。 - dreftymac
@Roger Pate **//听起来你在试图解决一个不存在的问题//**并不是,只是在为可能已经存在的一个功能进行研究。这不是一个问题,特别是对于那些不需要或使用这样一个功能的人来说。 - dreftymac

2

显然,jumpto="34"find="Lorem"可以被替换为网页浏览器风格的#?标记。

因此,您的第二个和第三个示例将如下所示:

href="c:/files/foobar.txt#34"       (jump to a line number)
href="c:/files/foobar.txt?Lorem"    (jump to 1st line containing word)

虽然,正如Roger Pate在上面所说的那样,你似乎正在解决一个不存在的问题。


2
欢迎来到SO!请尽量避免使用“上面”或“下面”,因为页面的排序会根据浏览方式(最旧、最新、投票)以及当前票数和最终被接受的答案而改变。 - Roger Pate

1

Emacs还有一个“find-file-at-point”功能,您可以使用M-x ffap调用它


1

同时参见LinkD。不像Org那样花哨,简单、小巧。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接