【问题标题】:Can Vim highlight matching HTML tags like Notepad++?Vim 可以突出显示匹配的 HTML 标签,如 Notepad++ 吗?
【发布时间】:2011-12-31 09:14:00
【问题描述】:

Vim 支持匹配成对的花括号、圆括号和方括号。这非常适合编辑 PHP 和 JavaScript 等 C 风格的语言。但是匹配 HTML 标签呢?

Notepad++ 自从我使用它以来就一直具有此功能。能够发现 HTML 块的开始和结束位置非常有用。我正在寻找类似 Vim 的东西(见绿色 div 标签):

一个额外的功能:突出显示未关闭的 HTML 标记,如上面屏幕截图中的红色标记。

matchit 已被提议为次优,但它需要额外的按键才能使用其功能。我希望无需额外按键就能查看 HTML 块的开始和结束位置。

我已经在互联网上搜索了类似的 Vim 内容。显然,根据two other StackOverflow 问题和 Nabble thread,我不是唯一一个。

我几乎让自己对 Vim 无法在视觉上匹配 HTML 标记感到厌烦。 Vim 可以做到这一点吗?

附录:如果目前无法使用任何现有插件执行此操作,是否有任何 Vimscript 向导提供有关如何编写合适插件的指示?

【问题讨论】:

  • 你能解释一下这个功能在什么方面“非常有用”吗?我真的不需要每时每刻都知道一切。当我需要了解某事时,Vim 旨在让我非常只需很少的按键即可轻松了解。
  • 虽然我不需要了解所有内容,但能够轻松知道 HTML 标记何时结束,这让我能够了解我正在使用的文件的结构。我也处理了很多写得不好的代码,所以有时会遇到没有结束标签的html标签,总是需要修复。
  • @romainl 我经常阅读您的回答,我真的很喜欢您的观点。但这一次我不得不不同意。我可以认为此功能不是必需的,但我发现这是一个非常好的问题。我觉得很奇怪,使用 Vim 没有简单的方法来获取它。
  • @lucapette,谢谢。其实我也喜欢这个问题。我从未使用过这样的功能,也从未觉得需要它。但这可能是您一旦尝试就离不开的东西之一。我喜欢我的工作流程和工作空间干净而专注,没有“行政碎片”,我认为这样的功能可能是多余的。插件的完美候选人。也许有人会尝试从 matchit 中获取灵感。
  • 你看到这个答案了吗? stackoverflow.com/questions/1957083/…

标签: html notepad++ vim


【解决方案1】:

我今天不得不处理一些 HTML,所以我想我会解决这个问题。向 vim.org 添加了一个 ftplugin,应该可以解决您的问题。

You can get it here on vim.org.

You can get it here on github.

希望它对你有用。如果您有任何问题,请告诉我。

【讨论】:

  • 谢谢!这正是我正在寻找的功能。只有两个小问题,如果您想修复它们: 1. 目前,只有相反的标签匹配。是否也可以匹配光标所在的标签? 2. 目前,如果一个html标签有属性,那些也是被选中的。是不是只能选择标签名,不带属性?
  • 好建议。他们都应该在 vim.org 上的 v1.2 中得到照顾。匹配的正则表达式现在更复杂了,如果您发现任何错误,请告诉我。
  • 应要求,我已将此 ftplugin 添加到 github。请参阅我更新的链接答案。
  • @GregSexton 你现在正式成为英雄了;)
  • 刚找到这个,看起来不错,但请注意,我必须在 ~/.vimrc 中添加“文件类型插件”才能打开它。如果将插件放入 ft​​plugin 文件夹后仍然无法正常工作,请将上述内容添加到 ~/.vimrc 中,您应该已经准备就绪。
【解决方案2】:

Greg 的 MatchTag.vim 插件很棒,但我想要更多。我希望 always 的封闭标签被突出显示,而不仅仅是当光标位于其中一个标签上时。

所以我写了MatchTagAlways,它完成了 Greg 的 MatchTag 所做的所有事情,并且始终突出显示封闭标记,无论光标在代码中的哪个位置。它还适用于非封闭标签和 HTML 模板语言,如 Jinja 或 Handlebars。

这是一个展示它的 GIF:

【讨论】:

  • 很酷的解决方案 - 我可能会使用原始版本,但我可以看到这很有帮助。我希望更多答案有 GIF 演示,太棒了!
  • 完全同意 Jason 的观点,为惊人的 GIF hack +1。
  • 这比接受的答案更好。但我仍然不确定如何验证超出垂直屏幕高度的标签。我无法将屏幕移过 vim 中的光标,并且分屏不会在两个窗口中显示活动标签。
  • 你这个绝对的传奇人物,我的生活从此变得更好......
  • 这比赏金答案要好得多
【解决方案3】:

我来这里是为了在 Vim 中寻找匹配的 html 风格的尖括号。这似乎有效:

:set mps+=<:>
:help matchpairs

【讨论】:

  • 这个方法不是解决办法,它只是让''
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 2021-05-13
相关资源
最近更新 更多