Как выбрать между скобками (или кавычками или ...) в Vim?
Я уверен, что раньше был плагин для такого рода вещей, но теперь, когда мне это нужно, я не могу его найти (естественно), поэтому я просто спрошу красиво и просто.
какой самый простой способ выбрать между скобками, кавычками или вообще списком совпадающих символов?
write ( *, '(a)' ) 'Computed solution coefficients:'
например, здесь я хотел бы выбрать (a)
или Computed solution coefficients:
.
меня не интересуют многострочные, просто случаи, которые происходят на одной линии.
9 ответов:
используйте любую навигационную клавишу, которую вы хотите получить внутри скобок, то вы можете использовать либо
yi(
илиyi)
скопировать все в соответствующие скобки. Это также работает с квадратными скобками (например,yi]
) и фигурные скобки. В дополнение кy
, вы также можете удалить или изменить текст (например,ci)
,di]
).я пробовал это с двойными и одинарными кавычками, и это, кажется, работает и там. Для ваших данных, я делаю:
write (*, '(a)') 'Computed solution coefficients:'
переместить курсор в элемент
C
типyi'
. Переместите курсор на пустую строку, нажмитеp
, и сделатьComputed solution coefficients:
как CMS отметил, это работает и для выбора визуального режима - просто используйте
vi)
,vi}
,vi'
и т. д.
для выбора между одинарными кавычками я обычно делаю
vi'
("выберите внутренние одинарные кавычки").внутри блока скобок я использую
vib
("выберите внутренний блок")внутри блока фигурных скобок вы можете использовать
viB
("capital B")чтобы сделать выбор "включительно" (выберите также кавычки, скобки или фигурные скобки), вы можете использовать
a
вместоi
.вы можете прочитать больше о выбор текстовых объектов по инструкции.
этот метод выбора встроен и хорошо освещен в справке Vim. Он охватывает теги XML и многое другое.
посмотреть
:help text-objects
.
используйте стрелки или
hjkl
чтобы перейти к одному из выражений брекетинга, затемv
для выбора визуального (т. е. выбора) режима, затем%
, чтобы перейти к другой кронштейн.
напишите функцию Vim .vimrc с помощью
searchpair
встроенные функции:searchpair({start}, {middle}, {end} [, {flags} [, {skip} [, {stopline} [, {timeout}]]]]) Search for the match of a nested start-end pair. This can be used to find the "endif" that matches an "if", while other if/endif pairs in between are ignored. [...]
Я бы добавил деталь к самому проголосованному ответу:
Если вы используете gvim и хотите скопировать в буфер обмена, используйте
"+<command>
скопировать все содержимое между скобками (или скобки или фигурные скобки)
например:
"+yi}
скопировать в буфер обмена все содержимое между фигурными скобками находится курсор.
я сделал плагин
vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotesон предоставляет текстовые объекты для ближайших пар кавычек любого типа. Используя только
iq
илиaq
Он позволяет вам работать с содержимым одиночных ( '), двойных ( " ) или обратных ( ` ) кавычек, которые в настоящее время окружают курсор, находятся перед курсором или позади (в этом порядке предпочтения). Другими словами, он прыгает вперед или назад, когда это необходимо для достижения котировки.это легче понять, глядя на примеры (курсор отображается с
|
):
- перед:
foo '1, |2, 3' bar
; после нажатияdiq
:foo '|' bar
- перед:
foo| '1, 2, 3' bar
; после нажатияdiq
:foo '|' bar
- перед:
foo '1, 2, 3' |bar
; после нажатияdiq
:foo '|' bar
- перед:
foo '1, |2, 3' bar
; после нажатияdaq
:foo | bar
- перед:
foo| '1, 2, 3' bar
; после нажатияdaq
:foo | bar
- перед:
foo '1, 2, 3' |bar
; после нажатияdaq
:foo | bar
приведенные выше примеры приведены для одинарных кавычек, плагин работает точно так же для двойных (") и обратных (`) кавычек.
вы также можете использовать любые другие операторы:
ciq
,diq
,yiq
,viq
и т. д.пожалуйста, взгляните на страницу github, связанную выше для получения более подробной информации.