Различные движения:%
%
Команда прыгает на матч пункта под курсором. Поместите курсор на открывающую (или закрывающую) скобку и используйте y%
для восстановления или d%
удаления всего, от курсора до совпадающей скобки.
Это работает, потому что %
это «команда движения», поэтому ее можно использовать везде, где vim ожидает такую команду. Откуда :help y
:
["x]y{motion} Yank {motion} text [into register x]. When no
characters are to be yanked (e.g., "y0" in column 1),
this is an error when 'cpoptions' includes the 'E'
flag.
По умолчанию «элемент» включает скобки, фигурные скобки, скобки, комментарии в стиле C и различные операторы прекомпилятора ( #ifdef
и т. Д.).
На домашней странице Vim есть плагин для "расширенного% соответствия" .
Вы можете прочитать документацию %
и связанные с ними команды движения, войдя :help various-motions
в командный режим.
объект-выберите
Существует еще один набор команд движения, которые вы можете использовать в визуальном режиме для выбора различных текстовых объектов.
Чтобы решить вашу конкретную проблему, вы должны сделать следующее:
printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
^
Допустим, ваш курсор находится в точке ^
. Введите следующую последовательность, чтобы выбрать нужную деталь:
v2a)
Сначала v
входит визуальный режим, затем вы указываете, что хотите перейти на 2
уровни выше. Наконец, a)
выбирается «блок». После этого вы можете использовать d
или x
удалить и т. Д.
Если вы не хотите включать внешние скобки, вы можете использовать вместо них «внутренний блок»:
v2i)
См. :help object-select
Полный список связанных команд.
a
означает «около», а не «а». Почувствуйте, как он лучше дополняет «внутреннее». Кажется, не проходит и дня, чтобы не узнать что-то новое о Vim.А как насчет
dib
илиdi(
.Он удалит внутренний (...) блок, на котором находится курсор.
Я люблю движения и выделения текстовых объектов !
источник
dab
=> удалить в блок (включая его скобки)Чтобы удалить все, что находится внутри пары круглых скобок, всегда можно оформить
di(
и его производные.Примечание :
Как @porglezomb предложил в своем комментарии, вы можете использовать
a
(«вместе с») вместоi
(«внутри»), чтобы включить круглые скобки. Таким образом, используяda(
удаляем все внутри(
и)
включая(
и)
.Удаление текста внутри ближайшей внешней пары круглых скобок:
Итак, для этой строки кода
предполагая, что ваш курсор находится в указанном выше диапазоне курсора, вы можете выполнить следующие команды:
Удаление текста внутри n-й внешней пары круглых скобок:
Чтобы получить все, что находится внутри n-й внешней пары круглых скобок, просто добавьте
n
перед указанной выше командой. Итак, с той же позицией курсора, что и выше,источник
a
в качестве аналогаi
, поскольку это может помочь многим людям.%
эту проблему, но это требует больше времени и, на мой взгляд, должно использоваться только для более сложных сценариев. Удаление чего-либо внутри определенной области - это именно тот сценарий использованияdi
.Можно использовать
d%
для удаления иy%
для рывка.источник
Поместите курсор на первую скобку, затем нажмите
v%y
илиv%d
.источник
Попробуйте ci [block-surrounder]
В вашем случае поместите курсор в любое место между двумя выделенными скобками и попробуйте использовать клавиши: ci (
источник
Как говорится в ответе Дэвида Нормана:
Поместите курсор на первую скобку, затем нажмите
v%y
илиv%d
.Объяснение с http://vimdoc.sourceforge.net/htmldoc/vimindex.html :
Это означает, что он будет выбирать все, что находится между двумя скобками (
%
) включительно, показывая вам выбор визуально (v
), а затем выдергивает / копируетy
или удаляет / вырезаетd
его. (В буфер по умолчанию.)Ставить / вставлять можно с помощью
p
.Сделал этот ответ, чтобы «научиться ловить рыбу» .
источник