elimina le righe che corrispondono a un modello da una determinata riga alla fine del file


10

Se ho un file con molti commenti e voglio eliminare tutti i commenti da dire, riga 3 alla fine del file, qual è il modo migliore per farlo?

Sono bloccato, dal momento che quello che ho provato per la prima volta non sembra fare esattamente quello che voglio:

:3,$/^#/d

Invece di cercare il modello ed eliminare le linee con esso nell'intervallo da 3 alla fine del file, elimina tutte le linee da 3 a una linea che corrisponde al modello, quindi si arresta.

Quindi, come posso applicare un comando ex a un intervallo di linee. In questo caso è fino alla fine di un file, ma sarebbe diverso se dovessi farlo su un segno, o tra le righe 10 e 20 o altri intervalli?

Risposte:


15

Utilizzare il :globalcomando per quello:

:3,$g/^#/d

Puoi applicarlo a linee che non corrispondono a un motivo:

:3,$g!/^#/d

È possibile utilizzare il meccanismo di gamma completa con esso (vedi :help :range):

:.,/#define/+3g/^#/d

E puoi usarlo con qualsiasi comando:

:3,$g/^#/s/foo/bar/g

È uno dei comandi più potenti di Vim, :help :globalper i dettagli vedere .


È inoltre possibile utilizzare :3,$v/foo/dper linee che non corrispondono a un motivo. :h vglobal
vappolinario,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.