Bagaimana cara menghapus semua baris yang TIDAK mengandung kata tertentu di Vim?

116

Dalam vim saya dapat menghapus semua baris yang berisi kata "harga" dengan ini

:g /price/d

Bagaimana saya bisa menghapus semua baris yang TIDAK mengandung kata "harga"?

digitaljoel
sumber
1
Bisakah pertanyaan ini dimigrasikan ke vi.stackexchange.com ? Saya mencoba menandai untuk migrasi tetapi tidak dapat menemukannya.
Mu Mind
@MuMind Ada topik di sini, jadi tidak perlu bermigrasi . " Jangan bermigrasi demi migrasi. Kami hanya memigrasikan pertanyaan karena mereka di luar topik di situs asli . Sangat mungkin bagi pertanyaan untuk menjadi di-topik di beberapa situs, tetapi itu bukan alasan untuk bermigrasi di tempat lain, kecuali OP meminta migrasi. " Juga, hanya karyawan SE yang dapat bermigrasi setelah 60 hari dan sangat jarang terjadi (bahkan moderator tidak dapat memigrasi pertanyaan lama).
8bittree

Jawaban:

158

Anda dapat gunakan

:%g!/price/d

untuk menghapus setiap baris yang tidak mengandung "harga"

Yab
sumber
3
Saya tahu ini akan mudah ...
digitaljoel
35
:g!juga dikenal sebagai :v(mirip dengan grep -v).
Chris Johnsen
3
Apa yang %dilakukan?
hippietrail
4
%adalah rentang khusus dalam konteks ini yang berarti keseluruhan file. Lihat :help cmdline-ranges.
Heptite
1
%bersifat opsional karena rentang default adalah seluruh buffer.
stillanoob
27

Anda juga bisa menggunakan:

:v/price/d

untuk menghapus baris.

MOHRE
sumber
1
Fwiw - Sepertinya gini untuk "global" dan vuntuk "terbalik" (jika Anda percaya apa yang Anda baca di vim.famdom).
ruffin
help :vin vim mengkonfirmasikannya
Paddy3118