
Как настроить Vim так, чтобы при изменении одного члена совпадающей пары HTML-тегов другой автоматически изменялся для соответствия?
Например: учитывая <span>content</span>
, я хочу изменить <span>
на <div>
, и тогда закрытие </span>
автоматически изменится на </div>
. Оптимально, чтобы это произошло при возврате из режима вставки в обычный режим, но было бы нормально, если бы мне пришлось нажать специальную комбинацию клавиш, чтобы это произошло.
решение1
Превосходныйокружать.vimделает это просто — с курсором в любом месте внутри тега, который вы хотите изменить, в обычном режиме введите cst<div>
( c
hange s
urrounding t
ag to <div>
). Имя тега будет изменено на "div" как в открывающем, так и в закрывающем теге, и вы вернетесь в обычный режим.
решение2
Вот несколько шагов:
- Наведите курсор на первый тег.
- Выберите внешний HTML-код, нажав: vat.
Нажмите Esc, чтобы выйти из визуального режима, и введите:
:'<,'<s/span/div/ :'>,'>s/span/div/
Обратите внимание, что это
:'>,'>s/span/div/
не будет работать правильно, если в одной строке есть два одинаковых закрывающих тега, так как это всегда изменит первый. Чтобы исправить это, используйте:'>,'>s/.*\zsspan/div/
вместо этого:. Смотрите:Как изменить последнее вхождение строки в строку?
Связанный:
решение3
Вимтагалонгплагин может сделать это:
решение4
СSwapIt — расширяемый обменник ключевых слов, вы можете определить группы тегов, которые затем можно переключать с помощью <C-a>
/ <C-x>
. Например, в ~/.vim/ftplugin/html_swapit.vim
:
SwapList layout p div span
Если у вас есть начальный и конечный теги на одной строке (и есть только один такой тег), вы можете редактировать оба тега через мойПлагин ChangeGlobally.
Существует также несколько «мультикурсорных» плагинов, которые позволяют отмечать определенные слова и редактировать их все одновременно.