#vim #vi
#vim #vi
Вопрос:
Допустим, у меня есть следующий литерал массива python:
def f():
arr = [
1,
2,
3
]
Я хочу удалить все, что находится в скобках, чтобы оно стало таким:
def f():
arr = []
Как я могу сделать это с минимальными командами в vim?
Это некоторые из моих попыток:
-
Использование
di]
приведет к удалению текста, но не пустых новых строк, оставляя много пробелов, которые мне пришлось бы удалить:def f(): arr = [ ]
-
Использование
da]
приведет к удалению новых строк, а также скобок:def f(): arr =
Ответ №1:
Вы можете просто сделать:
ca[[]<Esc>
или:
ca][]<Esc>
Смотрите :help text-objects
.
Комментарии:
1. Просто выполнение ci [ сработало лучше для меня. Оставил скобки.
Ответ №2:
Наведя курсор на первую открывающую скобку ( [
), нажмите V
, а затем %
. При этом будет выбран блок, к которому вы затем сможете присоединиться J
, за которым следует di[
.
Комментарии:
1. Легко ли сделать это миллион раз?
Ответ №3:
Выберите строки в визуальном режиме ( v
) и используйте J
для удаления новых строк. Затем используйте di[
.
Или, если строк много, di[
сначала, после чего вы перемещаете курсор на верхнюю строку, а затем J
. Это потенциально оставит пробел между скобками, который необходимо удалить с помощью x
.
Комментарии:
1. Это довольно хорошо. Я могу
va]
выделить каждую строку между скобками,J
чтобы затем объединить, а затемdi]
удалить содержимое массива. Итакva]Jdi]
в целом.2. Это тоже отличный способ сделать это.
Ответ №4:
Я считаю, что использование ярлыка для форматирования кода экономит много времени
Если вы установите vim красивее, вы могли бы сделать di[ <leader>p
Например, использование средства форматирования в JS означает, что мне не нужно удалять дополнительный интервал, переходить к концу строки для вставки ;
или исправлять отступы и т. Д