Оператор Vim %
переходит к совпадающим скобкам, комментариям и другим вещам. Однако это не соответствует XML-тегам (или любому другому тегу, насколько мне известно).
Какой лучший способ перейти к соответствующему тегу XML с помощью Vim?
Примечание. То, что я действительно хочу сделать, - это дублировать раздел в файле XML без ручного поиска соответствующего тега.
Существует vim плагин под названием matchit.vim. Вы можете найти его здесь: http://www.vim.org/scripts/script.php?script_id=39. Он был создан в значительной степени с конкретной целью, которую вы описываете.
Установите это, поместите курсор на тело тега (а не < > , иначе он будет соответствовать этим) и нажмите%, чтобы перейти к другому тегу. См. Страницу script, чтобы узнать, что еще она соответствует.
runtime macros/matchit.vim
должен включить его и разрешить %
совпадать с тегами XML.
Вы можете сделать это без дополнительных плагинов:
Еще одна полезная операция: v i t - выберет содержимое тега (внутреннего).
Обновление (благодаря @elrado). Пример: v i t o позволит вам выбрать внутренний контент тега и курсора позиции в начале выбранного текст.
Ссылка: https://superuser.com/questions/182355/how-can-i-select-an-html-tags-content-in-vim
Ссылка Vim (спасибо @Geek за это замечание):
:help visual-operators
вы получите:
4. Operating on the Visual area *visual-operators*
The objects that can be used are:
...
at a <tag> </tag> block (with tags) |v_at|
it inner <tag> </tag> block |v_it|
...
OP заявила, что то, что он действительно хотел сделать, это скопировать раздел XML без необходимости искать соответствующий тег. Это легко сделать в обычном режиме с yat<motion>p
, который захватывает текст внутри и включает соответствующие теги, а затем вставляет его. yit<motion>p
почти то же самое, но он не включает внешние теги.
"y" в строке - это, конечно, команда "yank" обычного режима. (:help y
)
a
или i
можно использовать для выбора объекта после оператора, такого как y
или внутри визуального выделения. Символ после a
или i
указывает, что должно быть выбрано. Используемый здесь тип объекта t
указывает тэг SGML. (:help object-select
).
Конечно, <motion>
просто означает перемещение где-то по вашему выбору, а p
помещает yanked текст в это место.
i
расшифровываю как «внутри» (или «внутри»). a
означает "а"?
a
означает «все».
Просто мой трюк использования "yank", "object-select" (выбор тега) и "переход к последнему выдернутому тексту".
yit`]
для перехода вправо до закрытия тега
и
yit
чтобы перейти вправо после открытия тега
Примечание: это изменит содержимое регистра по умолчанию