hapus baris yang cocok dengan pola dari baris yang diberikan ke akhir file

10

Jika saya memiliki file dengan banyak komentar di dalamnya dan saya ingin menghapus semua komentar dari katakanlah, baris 3 hingga akhir file, apa cara terbaik untuk melakukannya?

Saya buntu, karena apa yang saya coba pertama kali tampaknya tidak melakukan apa yang saya inginkan:

:3,$/^#/d

Alih-alih mencari pola dan menghapus garis dengan itu dalam rentang dari 3 hingga akhir file, menghapus semua baris dari 3 hingga melalui garis yang cocok dengan pola, dan kemudian berhenti.

Jadi bagaimana saya menerapkan perintah ex ke berbagai baris. Dalam hal ini adalah ke akhir file, tetapi apakah akan berbeda jika saya melakukannya untuk suatu tanda, atau antara baris 10 dan 20 atau rentang lainnya?

Eric Renouf
sumber

Jawaban:

15

Gunakan :globalperintah untuk itu:

:3,$g/^#/d

Anda dapat menerapkannya pada garis yang tidak cocok dengan pola:

:3,$g!/^#/d

Anda dapat menggunakan mekanisme rentang penuh dengannya (lihat :help :range):

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

Dan Anda dapat menggunakannya dengan perintah apa pun:

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

Ini salah satu perintah paling kuat di Vim, silakan lihat :help :globaldetailnya.

lcd047
sumber
Anda juga bisa menggunakan :3,$v/foo/duntuk garis yang tidak cocok dengan pola. :h vglobal
vappolinario