bagaimana melakukan pencarian terbalik pencarian vim untuk semua baris tanpa teks

18

dengan grep saya bisa melakukan grep -v "pencarian saya" untuk mendapatkan semua baris tanpa "pencarian saya"

dengan sed saya bisa sed '/ baz /! s / foo / bar / g' untuk mencari ganti teks pada baris tanpa baz

Apakah ada cara untuk melakukan hal yang sama yaitu vim. Dan apakah mungkin tetapi tanpa sintaks "s ///". Hanya menggunakan sintaks pencarian "/".

nelaaro
sumber

Jawaban:

29
:g/pattern/

cocok dengan semua garis ditemukan pola.

:v/pattern/

melakukan yang sebaliknya. Lihat :h globaluntuk lebih jelasnya.

Anda bisa menggunakannya seperti ini:

:v/pattern/norm Ipattern not found - <CR>

untuk menambahkan "pola tidak ditemukan -" ke setiap baris yang tidak memiliki "pola" atau

:v/pattern/s/nrettap/pattern

untuk mengganti "nrettap" dengan "pola" di setiap baris yang tidak memiliki "pola".

Contoh yang dibuat-buat, ya.

romainl
sumber
Saya suka di "nrettap".
UncleZeiv
1

Menggunakan: v commandEdit Pendekatan tradisional untuk menemukan garis yang tidak cocok dengan pola menggunakan perintah : v :

:v/Warning/p

Trik yang rapi ketika bekerja dengan file log besar di mana Anda ingin menyaring sebanyak mungkin baris yang tidak relevan sebelum Anda memulai pencarian sebenarnya adalah menyimpan file dengan nama sementara dan menghapus semua baris yang tidak cocok di sana:

:sav junk.log
:v/warning/d

Anda sekarang sedang mengedit tiruan dari file asli Anda dengan semua baris yang tidak cocok dengan "peringatan" dihapus dan Anda dapat mengeditnya sesuka hati.

Ref: https://vim.fandom.com/wiki/Search_for_lines_not_containing_pattern_and_other_helpful_searches

boot diri
sumber