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.


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.