Как изменить пару измененных тегов HTML в Vim?

Как я могу настроить Vim, чтобы при изменении одного члена пары совпадающих HTML-тегов, другой автоматически изменяется на соответствие?

Например: данный <span>content</span> , я хочу изменить первый <span> на <div> , а затем второй <span> автоматически изменится на </div> . Оптимально это произойдет при возврате из режима вставки в нормальный режим, но было бы хорошо, если бы мне пришлось нажать специальную привязку клавиш, чтобы это произошло.

Вот несколько шагов:

  1. Поместите курсор на первый тег.
  2. Выберите внешний код html, нажав: v a t .
  3. Нажмите Esc, чтобы выйти из визуального режима и введите:

     :'<,'<s/span/div/ :'>,'>s/span/div/ 

    Обратите внимание, что :'>,'>s/span/div/ не будет работать правильно, если в одной строке есть два вхождения одного и того же закрывающего тега, так как он всегда меняет первый. Чтобы исправить это, используйте:: :'>,'>s/.*\zsspan/div/ вместо. См .: Как изменить последнее вхождение строки в строке?

Связанный:

  • Как перепрыгнуть между соответствующими тегами HTML / XML? на Vim SE

С SwapIt – расширяемым ключевым словом swapper вы можете определить группы тегов, которые затем можно переключать с помощью <Ca> / <Cx> . Например, в ~/.vim/ftplugin/html_swapit.vim :

 SwapList layout p div span 

Если у вас есть как начальный, так и конечный теги в одной строке (и есть только один из них), вы можете редактировать их через мой плагин ChangeGlobally .


Существует также несколько «многокурсовых» плагинов, которые позволяют отмечать определенные слова и редактировать их все сразу.