1. Tidak sulit untuk mencapai perilaku menggunakan substitusi dua langkah:
:,$s/BEFORE/AFTER/gc|1,''-&&
Pertama, perintah substitusi dijalankan untuk setiap baris mulai dari yang sekarang hingga akhir file:
,$s/BEFORE/AFTER/gc
Kemudian, :substitute
perintah itu diulangi dengan pola pencarian, string pengganti, dan flag yang sama, menggunakan :&
perintah (lihat :help :&
):
1,''-&&
Namun, yang terakhir melakukan substitusi pada rentang baris dari baris pertama file ke baris di mana tanda konteks sebelumnya telah ditetapkan, minus satu. Karena :substitute
perintah pertama menyimpan posisi kursor sebelum memulai penggantian yang sebenarnya, baris yang dialamatkan oleh ''
adalah baris yang ada sebelum perintah substitusi itu dijalankan. ( ''
Alamat mengacu pada tanda
'
palsu; lihat :help :range
dan :help ''
untuk detailnya.)
Perhatikan bahwa perintah kedua (setelah |
pemisah perintah — lihat
:help :bar
) tidak memerlukan perubahan apa pun saat pola atau bendera diubah pada yang pertama.
2. Untuk menyimpan beberapa pengetikan, untuk memunculkan kerangka dari perintah substitusi di atas pada baris perintah, seseorang dapat mendefinisikan pemetaan mode-Normal, seperti:
:noremap <leader>cs :,$s///gc\|1,''-&&<c-b><right><right><right><right>
Bagian belakang <c-b><right><right><right><right>
diperlukan untuk memindahkan kursor ke awal baris perintah ( <c-b>
) dan kemudian empat karakter ke kanan ( <right>
× 4), sehingga meletakkannya di antara dua tanda garis miring pertama, siap bagi pengguna untuk mulai mengetik pola pencarian . Setelah pola yang diinginkan dan penggantinya siap, perintah yang dihasilkan dapat dijalankan dengan menekan
Enter.
(Seseorang mungkin mempertimbangkan untuk memiliki //
daripada ///
dalam pemetaan di atas, jika seseorang lebih memilih untuk mengetik pola, kemudian ketik garis miring pemisah itu sendiri, diikuti dengan string pengganti, daripada menggunakan panah kanan untuk memindahkan kursor ke atas garis miring pemisah yang sudah ada mulai bagian pengganti.)
\vpattern
- Pola 'sangat ajaib': karakter non-alfanumerik diinterpretasikan sebagai simbol regex khusus (tidak perlu melarikan diri)