Vim excluir todos os parágrafos com regex correspondente

2

Eu tenho uma série de parágrafos - um dump de thread java - que eu gostaria de deletar, mas SOMENTE se os parágrafos contiverem o texto / Executor\.getTask / - ou seja, os threads não tiverem uma tarefa. / p>

Como posso fazer isso no vim? Atualmente, tenho uma macro com o conteúdo /Executor\.getTask^Mvipd , mas isso significa que tenho que pressionar @@ algumas vezes - é um grande dump de thread. Espero que exista uma maneira de utilizar global para fazer isso.

Aqui está um exemplo de parágrafo.

"xyz-1376" prio=10 tid=0x00002aedbc289000 nid=0x6cdf waiting on condition [0x00002aedd221f000]
java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x0000000434ca6d48> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1085)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:807)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
    
por Michael Deardeuff 02.06.2014 / 23:35

2 respostas

6

Isso parece um trabalho para :global e :normal :

:g/Executor\.getTask/norm dap
    
por 02.06.2014 / 23:42
2

Você tem uma boa resposta, usando :global . Mas o seu método original também pode funcionar. Em vez de pressionar @@ algumas vezes, apenas dê uma contagem: 999999@@ . A macro parará automaticamente de repetir quando encontrar um erro - nesse caso, quando não houver mais correspondências para sua string de pesquisa. Se você não quiser que ele volte ao início do arquivo, você pode :set nowrapscan primeiro, mas neste caso não parece necessário.

    
por 03.06.2014 / 19:22

Tags