Apakah ada pencarian untuk perintah ganti?

12

Saya sangat menikmati incsearchfungsionalitas Vim . Apakah ada cara untuk memilikinya, atau sesuatu yang serupa dengannya, berfungsi saat saya melakukan penggantian?

Misalnya, jika dalam mode normal saya ketik:

:%s/potato/

Bisakah saya mendapatkan semua yang potatodisorot di file saya, sama seperti mereka disorot incsearchketika saya menulis

/potato

?

Ini sudah banyak membantu saya ketika menggunakan ekspresi reguler. Yang sangat bagus untuk dimiliki adalah ketika saya menulis ini:

:%s/potato/banana/

Ini akan menggantikan potatos dengan bananas, dan menyorotnya - mungkin penggantiannya harus dalam warna yang berbeda. Itu tidak bisa "melakukan" perubahan sampai saya menekan enter sekalipun).

Saya menggunakan neovim saat ini, kalau-kalau itu membantu.

kikito
sumber
1
Apakah yang Anda maksud incsearch? hlsearchharus bekerja ootb, jika saya mengetik :%s/potato/\0/untuk mengganti potatodengan dirinya sendiri, maka saya melihat semua kecocokan disorot.
jjaderberg
Inded, maksudku incsearch. Mengganti pertanyaan saya, terima kasih.
kikito
Mungkin tidak halal tetapi :/pattern<CR>berfungsi dengan baik lalu tambahkan% s dan ganti string. Sekali lagi, perbaiki pencarian dan gunakan CTR-R / untuk menempel ke bagian pencarian:%s/
Steve
Menambahkan ke @jjaderberg: :%s/potato/carrot/cakan membuat Anda melompat ("konfirmasi") melalui penggantian Anda (tambahkan guntuk mengganti semua instance pada baris yang sama) dan hlsearchAnda akan melihatnya terlebih dahulu.
Rolf

Jawaban:

9

Setelah sedikit mencari, saya menemukan masalah NeoVim ini , yang pada akhirnya ditutup oleh PR ini , yang membawa saya ke inccommandpengaturan. Menambahkan ini ke file konfigurasi saya:

set inccommand=nosplit

membuat NeoVim berperilaku hampir persis seperti yang saya minta di pertanyaan saya. Saya tidak menemukan sesuatu yang setara dengan Vim biasa, tetapi saya tidak mencarinya dengan penuh semangat.

kikito
sumber
4
Dalam situtaion Anda, untuk incsearchdi subtitutions (menjadi Vimmer malas dan lambat untuk mengadopsi hal-hal neo) saya mungkin akan mencari kentang ( /potato) menikmati biasa highlighighting pencarian tambahan, dan kemudian mengganti dengan pencarian kosong: %s//banana. Tapi saya tidak tahu bagaimana membandingkannya set inccommand=nosplitdalam hal lain.
jjaderberg
Terima kasih! Saya tidak tahu "trik pencarian kosong". Saya akan mencoba mengingatnya ketika saya vim di server saya
kikito
1
@jjaderberg ngomong-ngomong, saya sangat menyukai inccommandpengaturan itu sehingga saya membuat asciinema yang menunjukkannya di tempat kerja, kalau-kalau itu memotivasi Anda untuk mencoba neovim
kikito
2
@ jjaderberg Saya pikir itu layak menjadi jawaban.
Kaya
Sayangnya, tautan ke asciinema sudah mati sekarang.
sjy