Как заменить текст между кавычками в vi

Скажем, у меня есть эта строка кода:

$query = "SELECT * FROM table";

Есть ли команда в vi/vim, которая может мгновенно удалить все между кавычками и поместить курсор между ними, чтобы я мог начать вводить?

Ответ 1

Используйте ci", что означает: измените то, что внутри двойных кавычек.

Вы также можете манипулировать другими текстовыми объектами аналогичным образом, например:

  • ci' - изменение внутри одиночных кавычек
  • ciw - изменить внутри слова
  • ci( - изменить внутри круглых скобок
  • dit - удалить внутри тега HTML и т.д.

Подробнее о различных текстовых объектах vim здесь.

Ответ 2

Вы можете выбрать между кавычками, а затем удалить (d), изменить (c) и т.д., используя

vi"

Аналогичным образом вы можете подставить фигурные скобки, скобки, элементы XML и т.д. таким образом:

vi(
vi{
vit

или просто изменить/удалить, выполните соответствующие di", ci" и т.д. Подстановка a для i будет охватывать окружающие элементы (например, вы отмечаете или изменяете скобки и содержимое, например)

Ответ 3

Из уже внутри кавычек вы можете сделать

di"

Прочитайте его как удалить внутри "

Ответ 4

Я создал плагин 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 для более подробной информации.