Скажем, у меня есть эта строка кода:
$query = "SELECT * FROM table";
Есть ли в vi / vim команда, которая может мгновенно удалить все, что находится между кавычками, и поместить курсор между ними, чтобы я мог начать печатать?
Использование ci"
, что означает: изменить то, что находится внутри двойных кавычек.
Вы также можете аналогичным образом манипулировать другими текстовыми объектами, например:
ci'
- изменить внутри одинарных кавычекciw
- изменить внутри слова ci(
- заменить внутри скобокdit
- удалить внутри тега HTML и т. д.Подробнее о различных текстовых объектах vim здесь .
vim
, но НЕvi
. (Не уверен)F"ci"
.Вы можете выбрать между кавычками, а затем удалить (
d
), изменить (c
) и т. Д., ИспользуяТочно так же вы можете заменить фигурные скобки, скобки, элементы XML и т. Д. Таким образом:
или просто изменить / удалить сделайте соответствующие
di"
иci"
т. д. Заменаa
наi
будет охватывать окружающие элементы (например, вы помечаете или изменяете скобки и содержимое)источник
Я сделал плагин
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, указанную выше, для получения более подробной информации.
источник
Уже внутри цитат вы можете сделать
Прочтите как удалить внутри "
источник
В дополнение к ответу Брайана вы также можете
p
(вставить) иy
(выдернуть) новое значение, поэтому, если вы хотите заменить значение внутри кавычек другим значением, вы можете сделатьyi"
выбор, который вы хотите скопировать,vi"
чтобы выбрать область которое вы хотите заменить, а затем простоp
правильно заменить значение.источник
Выбранный ответ подходит ТОЛЬКО для ViM, но НЕ для vi. Вопрос неточен еще и потому, что автор не упомянул начальную позицию курсора. Если мы предположим, что курсор находится внутри двойных кавычек, то для vi ответ будет:
Куда:
T "- вернуться сразу после символа"
c - изменить команду
t "- укажите конечную позицию для команды c, где она должна прекратить стирание символов, другими словами диапазон для изменения
источник