2016-10-24 2 views
3

Say У меня есть следующий питона литерал массива:Удалить все между двумя скобами в Vim, включая переводы строк

def f(): 
    arr = [ 
     1,   
     2, 
     3 
    ] 

Я хочу, чтобы удалить все, что в скобках, так что он становится этим:

def f(): 
    arr = [] 

Как я могу это сделать с минимальными командами в vim?


Вот некоторые из моих попыток:

  • Использование di] удалит текст, а не пустые символы новой строки, оставляя много пробелов, я бы удалить:

    def f(): 
        arr = [   
        ] 
    
  • Использование da] удаляет новые строки, а также скобки:

    def f(): 
        arr = 
    

ответ

2

Вы можете просто сделать:

ca[[]<Esc> 

или:

ca][]<Esc> 

:help tex-objects См.

2

Выберите строки в визуальном режиме (v) и использовать J для удаления новой строки. Затем используйте di[.

Или, если есть много строк, di[ сначала, после чего вы перемещаете курсор в верхнюю строку, а затем J. Это потенциально может оставить пробел между скобками, которые необходимо удалить с помощью x.

+0

Это очень хорошо. Я могу 'va]' выбирать каждую строку между скобками, 'J' для присоединения, а затем' di] 'для удаления содержимого массива. Итак, 'va] Jdi] в целом. – Miguel

+0

Это аккуратный способ тоже это сделать. –

4

С помощью курсора на первом открывающем кронштейне ([) нажмите V, а затем %. Это выберет блок, к которому вы можете присоединиться J, а затем di[.