代码之家  ›  专栏  ›  技术社区  ›  david

如何防止在GitHub wiki中自动生成链接?

  •  86
  • david  · 技术社区  · 10 年前

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

    www.foobar.com
    

    GitHub自动假设这是一个URL,并将文本设置为指向 http://www.foobar.com 。然而,有时我不希望创建超链接。有办法阻止这种行为吗?也许是某种降价?

    7 回复  |  直到 10 年前
        1
  •  97
  •   VonC    3 年前

    2021 11月更新,VSCode 1.63:

    这个问题应该与 issue 136198 “markdown预览错误创建链接”

    虽然 "markdown.preview.linkify": false 将禁用 linkify 功能完整,设置 md.linkify.fuzzyLink false 将仅对链接禁用 没有 http标头。
    我认为这是一个更好的选择,并且已经得到了 markdown-it .


    原答案(2014年): 这不仅限于wiki页面,而且是 GFM (GitHub Flavored Markdown) url autolinking feature .

    将它们放在“”中可以起作用,但将url显示为代码:foo http://example.com 酒吧

    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<span>@</span>example.com


    Venryx 在中建议 the comments 更短/更清洁的解决方案:

    只需添加一个 void element 标签(我更喜欢 <area> ),位于破坏URL可检测性的位置,例如在第一个点之前。

    例子: www<area>.foobar.com

        2
  •  37
  •   Justin Slone    5 年前

    此外,如果您在URL自动链接以外的其他问题上遇到问题,我发现正在逃避。同样有效。

    例子:

    foobar.web -> foobar&#46;web
    
        3
  •  12
  •   KyleMit Steven Vachon    2 年前

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

    下面是一个示例,在中间插入了一个零宽度空格 https :

    https://example.com/

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

    另请参见 this thread on twitter

    笔记 :这可能会让任何试图手动复制链接并将其粘贴到URL中的人感到非常困惑,因为它无法解析,也不清楚原因。这对于你根本不想被遍历的笑话URL最有效 www.great-answer-on-stack-overflow-kyle.com

        4
  •  11
  •   SamB som-snytt    6 年前

    您也可以只应用 backslash escape 到冒号(或任何其他标点符号,显然),像这样:

    http\://www.foobar.com
    
        5
  •  7
  •   vstelmakh    4 年前

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

    好处包括:

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

    示例

    对于URL,请插入 http :
    https​&#65279;://example.com/ https://example.com/

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

        6
  •  3
  •   Dharman Aman Gojariya    3 年前

    我认为这只是一个更完整、目前正确的答案。

    VSCode的行为与Github不同。Github自动URL处理似乎作用于“www.”前缀(可能是其他触发器),而VSCode自动转换以前缀结尾的任何句点/句号分隔的文本 IANA registered country-code TLD .VCode不会像Github那样自动完成任何以“www.”开头的文本。比较下面的三幅图像,并注意标记的位置以及每个环境如何渲染文本。

    请注意,抑制所有自动URL呈现的唯一机制是(最难看的)在每个句点之前放置标记。标记是什么可能无关紧要。“span”在所有情况下都可以。我用“nowiki”是因为它在这里是一致的 在MediaWiki和其他网站上。

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

    • 如果它以“www.”开头,那么就使用丑陋的解决方案。请参阅Github渲染的最后两行,并注意最后一个句点之前的标记将仅对文本的最后部分抑制渲染。
    • 但是,如果文本不是以“www.”开头,那么VSC和GH都需要在最后一段之前添加一个标记。
    • 这两种环境都要遵守评估文本的规则。在某些时候,其中一个或两个可能会自动转换.gov、.net、其他通用TLD,最终转换为任何有效的ggTLD,如.online、.xyz或.aaa。为了将来证明您的文本,请考虑对所有类似文本使用难看的方法,其中文本不是将用反引号呈现的代码。
    • 实际标签似乎不重要,无论 <nowiki/> , <span/> <k> 。我个人建议 nowiki 因为它已经是一个公认的标签,正是出于这个目的。
    • 关于 &# HTML编码,我尝试了这里的建议,但文本没有被处理。我没有在这里包括示例,但可以用字符编码替换任何文本标记,看看它是如何为您工作的。

    VSCode编辑器:
    raw VSCode markdown

    VSCode预览:
    same code rendered in VSCode markdown preview

    Github自述.md:
    same code pushed to repo and rendered by Github

        7
  •  2
  •   HughZhang    4 年前

    在我的情况下,
    我用过
    # some&#46;thing
    在标题中,然后我得到一个没有链接的标题。

    有点奇怪

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