%
Оператор Vim переходит к соответствующим круглым скобкам, концам комментариев и многим другим вещам. Однако он не соответствует тегам XML (или любому другому тегу, насколько мне известно).
Как лучше всего перейти к соответствующему тегу XML с помощью Vim?
Примечание. На самом деле я хочу продублировать раздел в XML-файле, не ища вручную соответствующий тег.
Ответы:
Существует плагин vim под названием matchit.vim. Вы можете найти его здесь: http://www.vim.org/scripts/script.php?script_id=39 . Он был создан в точности с той целью, которую вы описываете.
Установите его, поместите курсор в тело тега (не на <>, иначе он будет соответствовать им) и нажмите%, чтобы перейти к другому тегу. См. Страницу сценария, чтобы узнать, что еще он соответствует.
источник
runtime macros/matchit.vim
должен включить его и разрешить%
сопоставление тегов XML.packadd! matchit
чтобы.vimrc
включить его. Подробнее:help matchit
matchit
не работает в большом источнике html. github.com/andymass/vim-matchup преуспевает в источнике.Вы можете сделать это без дополнительных плагинов:
Еще одна полезная операция: vit- выделит содержимое тега (внутренний).
Обновление (спасибо @elrado) Пример: vitoпозволит вам выбрать внутреннее содержимое тега и поместить курсор в начало выделенного текста.
Ссылка: /superuser/182355/how-can-i-select-an-html-tags-content-in-vim
Ссылка на Vim (спасибо @Geek за то, что это заметили):
ты получишь:
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| ...
источник
cit
изменяет я nterior тега - только содержание.cat
изменить в ЛЛ тега - содержание и в LSO сам тег, как открытие и закрытие.OP заявил, что на самом деле он хотел скопировать раздел XML без необходимости искать соответствующий тег. Это легко сделать в обычном режиме с помощью
yat<motion>p
, который извлекает текст внутри и включает соответствующие теги, а затем вставляет его.yit<motion>p
почти то же самое, но не включает внешние теги.'Y' в строке, конечно же, является командой "yank" нормального режима. (
:help y
)a
илиi
может использоваться для выбора объекта после оператора, такого какy
или внутри визуального выбора. Символ послеa
илиi
указывает, что следует выбрать.t
Используемый здесь тип объекта указывает тег SGML. (:help object-select
).Конечно,
<motion>
просто означает переместиться куда-нибудь по вашему выбору иp
поместить извлеченный текст в это место.источник
i
означает «внутри» (или «внутренний»).a
означает "а"?a
означает «все».a
означает « вокруг» . Для меня это имеет больше смысла.Просто мой трюк с использованием «yank», «object-select» (выбор тега) и «перехода к последнему восстановленному тексту».
перейти вправо перед закрывающим тегом
а также
перейти сразу после открытия тега
Примечание: это изменит содержимое регистра по умолчанию
источник