Iya! Gunakan cbendera untuk :substitute. Dari :help substitute:
[c] Confirm each substitution. Vim highlights the matching string (with
hl-IncSearch). You can type: :s_c
'y' to substitute this match
'l' to substitute this match and then quit ("last")
'n' to skip this match
<Esc> to quit substituting
'a' to substitute this and all remaining matches {not in Vi}
'q' to quit substituting {not in Vi}
CTRL-E to scroll the screen up {not in Vi, not available when
compiled without the +insert_expand feature}
CTRL-Y to scroll the screen down {not in Vi, not available when
compiled without the +insert_expand feature}
Contoh penggunaannya sederhana seperti pie:
%s/old/new/c
Ini sangat berguna, tetapi tidak tahu tentang ini sampai 2 minggu yang lalu :-) Dan itu bahkan tersedia di ol 'vi :-)
Kiat bonus: Anda mungkin juga ingin menggunakan :set nowrapscan; ini mencegah Vim dari pembungkus ke atas ketika menyentuh bagian bawah. Saya menemukan ini sangat berguna saat menggunakan cbendera.
Pengaturan &incsearch( set incsearch) di Vim sangat berguna. Anda dapat menggunakannya bersama-sama dengan trik yang bermanfaat dan sedikit diketahui.
Caranya adalah dengan mencoba regex kompleks Anda hanya dengan menggunakan perintah /atau ?. Vim akan menggunakan &incsearchpengaturan untuk menampilkan pertandingan secara interaktif. Setelah puas dengan regex, Anda dapat menggunakan :%s//replacementvim menggunakan pencarian sebelumnya.
Perhatikan bagaimana bagian dalam //kosong (di situlah Anda meletakkan teks untuk dicari). Jika Anda membiarkannya kosong, Anda memberi tahu Vim untuk menggunakan regex pencarian sebelumnya. Dengan ini, Anda bisa mengetikkan regex kompleks dengan /dan memiliki semua manfaat set incsearch, dan kemudian menggunakan %s//replacementperintah untuk benar-benar menjalankan pencarian dan ganti.
Jika Anda menginginkan sesuatu yang mirip dengan pencarian :sperintah, periksa vim-over , tapi saya lebih suka menggunakan cara Vim asli.
Saya dulu menggunakan varian ini: Cukup gunakan :%s/pattern/replace/dan kemudian tekan uuntuk membatalkan, Anda dapat melihat bagian-bagian yang Vim berubah jika Anda telah hlsearchmengaktifkan. Dan Anda dapat mengganti teks ini lagi dengan ^R.
Martin Tournoij
7
Substitusi interaktif favorit saya adalah mencari menggunakan /dan menelusuri pertandingan menggunakan n.
Kemudian pilih kecocokan menggunakan gndan kemudian suntuk mengganti teks dengan apa pun yang saya suka.
Dan ulangi dengan pindah ke pertandingan berikutnya dan menekan.
Ini adalah trik yang sangat bagus, karena: (1) interaktif, (2) Anda dapat pergi pertandingan sebelumnya jika Anda secara tidak sengaja melewatkannya (sesuatu yang tidak dapat Anda lakukan menggunakan :s/old/new/gc).
Ayrat
3
Di Neovim ada juga 'inccommand'opsi yang memungkinkan Anda melihat pratinjau hasil :sperintah saat Anda mengetiknya.
:%s/pattern/replace/
dan kemudian tekanu
untuk membatalkan, Anda dapat melihat bagian-bagian yang Vim berubah jika Anda telahhlsearch
mengaktifkan. Dan Anda dapat mengganti teks ini lagi dengan^R
.Substitusi interaktif favorit saya adalah mencari menggunakan /dan menelusuri pertandingan menggunakan n.
Kemudian pilih kecocokan menggunakan gndan kemudian suntuk mengganti teks dengan apa pun yang saya suka.
Dan ulangi dengan pindah ke pertandingan berikutnya dan menekan.
sumber
:s/old/new/gc
).Di Neovim ada juga
'inccommand'
opsi yang memungkinkan Anda melihat pratinjau hasil:s
perintah saat Anda mengetiknya.sumber
Demi kepentingan semua orang,
incsearch
telah diperbarui di vim8 untuk juga menampilkan pratinjau saat Anda mengetik polanyasumber