Может ли vim выделить соответствующие HTML-теги, например Notepad ++?

VIM поддерживает совпадающие пары фигурных скобок, скобок и квадратных скобок. Это отлично подходит для редактирования языков C-стиля, таких как PHP и Javascript. Но как насчет соответствия HTML-тегов?

Notepad ++ имеет эту функцию до тех пор, пока я ее использую. Быть способным определить, где начинаются и заканчиваются блоки HTML, очень полезно. Я ищу что-то подобное для vim (см. Зеленые теги div):

(бонусная функция: выделение закрытых HTML-тегов, таких как красный тег на этом скриншоте).

matchit был предложен в качестве следующего лучшего, но для его функциональности требуется дополнительное нажатие клавиши. Я бы хотел видеть, где блоки HTML начинаются и заканчиваются без дополнительного нажатия.

Я трал Интернет, чтобы найти что-то подобное для vim. По-видимому, я не единственный, согласно 2 другим qaru.site/info/36694/... questions и nabble.

Я почти смирился с тем, что vim не смог визуально сопоставлять html-теги. Возможно ли это сделать vim?

Добавление: Если в настоящее время это невозможно сделать с любыми существующими плагинами, есть ли у какого-либо мастера vimscript какие-либо указатели на то, как подойти к написанию подходящего плагина?

Ответ 1

Мне пришлось работать с некоторым HTML сегодня, поэтому я решил заняться этим. Добавлен ftplugin на vim.org, который должен решить вашу проблему.

Вы можете получить его здесь на vim.org.

Вы можете получить его здесь, на github.

Надеюсь, это сработает для вас. Дайте мне знать, если у вас возникнут проблемы.

Ответ 2

Плагин Greg MatchTag.vim потрясающий, но я хотел чего-то большего. Я хотел бы, чтобы приложенные теги всегда были выделены, а не только когда курсор находится на одном из тегов.

Итак, я написал MatchTagAlways, который делает все, что делает Greg MatchTag, а также всегда выделяет охватывающий тег, вне зависимости от того, где находится курсор код. Он также работает с закрытыми тегами и шаблонами HTML-шаблонов, такими как Jinja или Handlebars.

Здесь GIF показывает это в действии:

MTA in action

Ответ 3

Я пришел сюда, чтобы найти подходящие угловые скобки html в Vim. Кажется, что это работает:

:set mps+=<:>
:help matchpairs