【问题标题】:How do I prevent auto-generated links in the GitHub wiki?如何防止 GitHub wiki 中自动生成的链接?
【发布时间】:2021-11-22 22:14:55
【问题描述】:

在 GitHub wiki 页面上,如果我输入:

www.foobar.com

GitHub 自动假定这是一个 URL,并将文本作为指向 http://www.foobar.com 的超链接。但是,有时我不想创建超链接。有没有办法阻止这种行为?也许某种降价?

【问题讨论】:

  • 将 URL 放入代码环境中(即在反引号中间)
  • VSCode 1.63(2021 年 11 月,7 年后)应该生成 URL 的链接没有http(s)://。见我的edited answer below

标签: github hyperlink markdown github-flavored-markdown autolink


【解决方案1】:

2021 年 11 月更新,VSCode 1.63:

这个问题应该通过issue 136198 "markdown preview wrongly created links" 来解决

虽然"markdown.preview.linkify": false 将完全禁用linkify 功能,但将md.linkify.fuzzyLink 设置为false 将仅对 http(s) 标头的链接禁用它。
我认为这是一个更好的选择,它已经得到markdown-it 的支持。


原始答案(2014 年): 这不仅限于 wiki 页面,而且是 GFM (GitHub Flavored Markdown) url autolinking feature 的一部分。

将它们放入 `` 可以工作,但将 url 显示为代码:foo http://example.com bar。

foo `http://example.com` bar

另一个技巧 (mentioned in this gist) 是

ht<span>tp://</span>example.com 

这会将 http://example.com 显示为常规文本。

在你的情况下(没有 http://)

w<span>ww.</span>foobar.com

这也会将 www.foobar.com 显示为常规文本。

geekley 添加in the comments

对于电子邮件,您可以使用foo&lt;span&gt;@&lt;/span&gt;example.com


Venryxthe comments 中建议更短/更清洁的解决方案:

只需在破坏 URL 可检测性的位置添加 void element 标记之一(我更喜欢 &lt;area&gt;),例如。就在第一个点之前。

示例:www&lt;area&gt;.foobar.com

【讨论】:

  • 不理想,但这是迄今为止我遇到的唯一可行的解​​决方案。谢谢。
  • 在同一要点的底部也提到了使用标点符号&amp;#46;
  • 不需要长标签名 https&lt;k&gt;://exa&lt;/k&gt;mple.com/ 就可以了 @kitsu.eb :这不再有效,甚至 https&amp;#58;//example&amp;#46;com/ ...
  • 对于电子邮件,您可以使用foo&lt;span&gt;@&lt;/span&gt;example.com
  • @Venryx 有趣的选项,谢谢。我已将您的评论包含在答案中以提高知名度。
【解决方案2】:

另外,如果您遇到的不是 URL 自动链接的问题,我发现转义了 .也可以。

例子:

foobar.web -> foobar&#46;web

【讨论】:

  • 这是最好的解决方案。适用于文件名和 URL。也适用于 VSCode。但似乎在 SO cmets 中不起作用。 example.com example.com
  • 除非有人在 2020 年破坏了 VS Code,否则这在 VS Code 中不再适用。
  • 也可以在Discourse 中使用。
【解决方案3】:

您可以使用zero-width space 来防止大多数自动链接器将字符解释为 URL

这是一个在https: 之间插入零宽度空格的示例

https​://example.com/

要插入一个,您可以从上面的网址复制或this page

另见this thread on twitter

【讨论】:

  • 我喜欢这个,因为它不会妨碍原始文件的可读性
  • 快速注意 HTML 是 ​
  • 这是我最喜欢的新方法!感谢补充
【解决方案4】:

您也可以将backslash escape 应用于冒号(或任何其他标点符号,显然),如下所示:

http\://www.foobar.com

【讨论】:

  • 许多自动链接会在内容呈现后应用。根据我的经验,\: 或任何其他转义都会使: 不受影响,但链接仍将应用于看起来像 URl 的字符串。
【解决方案5】:

建议使用zero-width no-break space
在 HTML 中可用作 Unicode 字符引用:&amp;#xfeff;&amp;#65279;

好处是:

  • 防止自动链接(显然)
  • 不可见
  • 没有意外的换行符
  • 在源代码中可读

示例

对于在http: 之间插入的网址
https​&amp;#65279;://example.com/ → https​://example.com/

对于在@ 之后插入的电子邮件:
user@&amp;#65279;example.com → user@example.com

【讨论】:

  • 这个方法对我有用,在 VS 中编辑并在 TFS/Git 中查看。在 VS Code 中查看时转义是可以的,但在 TFS/Git 中则不行
【解决方案6】:

我建议这只是一个更完整且当前正确的答案。

有人提出 VSCode 的行为与 Github 不同。似乎 Github 自动 URL 处理作用于“www”。前缀(可能是其他触发器),而 VSCode 会自动转换任何以 IANA registered country-code TLD 后缀结尾的句点/句号分隔的文本。 VSCode 不会自动补全任何以“www”开头的文本。就像 Github 一样。比较下面的三张图片,注意标签的位置以及每个环境如何呈现文本。

请注意,抑制所有自动 URL 呈现的唯一机制是(最丑陋的)在每个句点之前放置一个标签。标签是什么可能并不重要。 'span' 可能适用于所有情况。我使用“nowiki”是因为它在此处在 MediaWiki 以及其他可能是一致的。

然而,了解规则后,抑制自动 URL 呈现的“答案”似乎取决于文本。

  • 如果它以“www.”开头,请使用丑陋的解决方案。查看 Github 渲染的最后两行,注意最后一个句点之前的标签将禁止仅对文本的最后部分进行渲染。
  • 但如果文本不以“www.”开头,则 VSC 和 GH 都需要在最后一个句点之前添加一个标签。
  • 两种环境都受评估文本的规则的约束。在某些时候,其中一个或两个可能会自动转换 .gov、.net、其他常见 TLD,并最终转换任何有效的 ggTLD,如 .online、.xyz 或 .aaa。为了使您的文本经得起未来考验,请考虑对所有此类文本使用丑陋的方法,其中文本不是将使用反引号呈现的代码。
  • 无论是&lt;nowiki/&gt;&lt;span/&gt; 还是&lt;k&gt;,实际的标签似乎并不重要。我个人推荐nowiki,因为它已经是公认的用于此目的的标签。
  • 关于&amp;# HTML 编码,我尝试了这里的建议,没有处理文本。我没有在此处包含示例,但您可以随意将任何文本内标记替换为字符编码,看看它是如何为您工作的。

VSCode 编辑器:

VSCode 预览:

Github Readme.md:

【讨论】:

  • 我 2014 年答案的有趣更新。赞成。
【解决方案7】:

就我而言,
我用过
# some&amp;#46;thing
在标题中,然后我得到一个没有外部链接的标题。

some.thing

并使用
[some.thing](#something)
作为链接。
“#something”来自网络预览的链接。

【讨论】:

    猜你喜欢
    • 2013-03-15
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 2019-03-10
    • 2015-06-22
    • 2015-04-12
    相关资源
    最近更新 更多