Выберите текст между двойными кавычками по нескольким строкам в VIM

Скажем, у меня есть следующий текст:

"test 1
test 2
test 3"

Я хочу выбрать все между кавычками. Я использовал vi ", но он не работает, он работает только тогда, когда текст находится в одной строке. С другой стороны, когда у меня есть что-то вроде этого:

(test1,
test 2)

и я набираю vi(, который выбирает весь текст.

Любые указатели будут очень благодарны. Благодаря

Ответ 1

Текстовые объекты, которые ограничены одинаковыми символами (", '), работают только внутри строки, поскольку в противном случае было бы трудно определить, какую область выбора выбрать.

Если вам нужен такой многострочный текстовый объект, вы должны определить свою собственную альтернативу. Плагины вроде kana/vim-textobj-user или мой собственный плагин CountJump помогают вам с этим.

Ответ 2

Встроенный текст цитаты и двойной кавычки не пересекает границы линии. Однако вы можете использовать поиск с операторами vim. например.

y/"<cr>
c/"<cr>FOO<esc>
d?"<cr>

Ответ 3

Плагин vim-textobj-quotes делает именно то, что вы ищете: https://github.com/beloglazov/vim-textobj-quotes

Он предоставляет текстовые объекты для ближайших пар кавычек любого типа и поддерживает кавычки, охватывающие несколько строк. Используя только iq или aq, вы можете управлять содержимым одиночных ('), двойных (") или обратных (`) кавычек, которые в настоящее время окружают курсор, перед курсором или сзади ( в этом порядке предпочтения). Иными словами, он перескакивает вперед или назад, когда это необходимо для достижения котировок.

Пожалуйста, просмотрите приведенную выше страницу github для более подробной информации.