В vim, есть ли плагин для использования%, чтобы соответствовать соответствующей двойной кавычке (")? - PullRequest
36 голосов
/ 18 сентября 2009

Клавиша % является одной из лучших функций vim: она позволяет вам переходить с { на }, [ на ] и так далее.

Однако по умолчанию он не работает с кавычками: либо ", либо ', возможно потому, что открывающая и закрывающая кавычки - это один и тот же символ, что усложняет реализацию.

Подумав немного больше о проблеме, я убежден, что она должна быть реализована путем подсчета количества нечетных или четных предшествующих кавычек и перехода к предыдущей или следующей кавычке, соответственно.

Прежде чем я попытаюсь реализовать это самостоятельно, я просто хотел бы знать, есть ли у кого-то уже?

Ответы [ 5 ]

75 голосов
/ 18 сентября 2009

В зависимости от причины, по которой вам это нужно, может быть лучший способ выполнить то, что вы ищете. Например, если у вас есть следующий код:

foo(bar, "baz quux")
              ^

и ваш курсор оказывается на ^, и вы хотите заменить все внутри кавычек чем-то другим, используйте ci". Это использует Vim «текстовые объекты» для изменения (c) всего внутри (i) кавычек (") и переводит вас в режим вставки, например:

foo(bar, "")
          ^

Затем вы можете начать ввод текста замены. Есть много других текстовых объектов, которые действительно полезны для этого вида ярлыков. Изучайте (и используйте) одну новую команду Vim в неделю, и вы быстро станете экспертом!

32 голосов
/ 18 сентября 2009

Ответ Грега был очень полезен, но мне также нравятся команды 'f' и 'F', которые перемещают курсор вперед и назад к символу, который вы нажимаете после команды.

Поэтому нажмите f ", чтобы перейти к следующему" символу, и F ", чтобы перейти к предыдущему.

9 голосов
/ 21 сентября 2009

Я бы хотел остановиться на ответе Грега и представить плагин round.vim .

Предположим, что вместо редактирования содержимого ваших цитат вы хотите изменить сами символы ". Допустим, вы хотите перейти от двойных кавычек к одиночным.

foo(bar, "baz quux")
              ^

Плагин объемного звучания позволяет вам изменить это на

foo(bar, 'baz quux')
              ^

просто выполнив следующее: cs"' (что гласит: «измените окружающие двойные кавычки на одинарные»).

Вы также можете удалить кавычки, просто набрав: ds" (что гласит: «удалить окружающие двойные кавычки).

Здесь есть хорошее введение в плагин объемного звучания здесь .

7 голосов
/ 25 января 2017

Я знаю, что этот вопрос старый, но вот плагин для использования%, чтобы соответствовать соответствующей двойной кавычке:

https://github.com/airblade/vim-matchquote

3 голосов
/ 04 февраля 2018

Я нашел эту технику очень полезной для перехода к началу / концу очень длинной строки в кавычках.

  1. когда курсор находится внутри строки, визуально выделите всю строку, используя vi" или vi'
  2. перейти к началу / концу строки, нажав o
  3. нажмите escape для выхода из режима визуального выбора

это фактически делает курсор рядом с начальным / конечным символом кавычки, но все еще чувствует себя довольно полезным.

Редактировать

Добавление отличного комментария Стефана здесь, который является лучшим вариантом для тех, кто может пропустить комментарий.

Если вы используете va "(и va '), тогда он фактически визуально сам выберет также кавычки.

- Стефан ван ден Аккер

...