Как заменить текст между кавычками в 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 для более подробной информации.