Jawaban:
Saya akan menggunakan \zs
:%s/.*\zspattern/replacement/
Sedikit penjelasan:
.
mewakili setiap karakter tunggal*
mewakili pencocokan serakah (sebanyak mungkin)Di Vim Anda dapat menggunakan jangkar lebar nol \zs
dan \ze
untuk menentukan awal dan akhir dari pola yang dicari, yang ingin Anda cocokkan. Apa pun sebelum \zs
dan sesudah \ze
dalam pola Anda akan tetap tidak terpengaruh oleh penggantian.
Untuk membuatnya mudah dimengerti, saya ingin menggunakan contoh ini dari Wikia 's Pencarian dan mengganti :
Simpan pengetikan dengan menggunakan
\zs
dan\ze
untuk mengatur awal dan akhir suatu pola. Misalnya, alih-alih::s/Copyright 2007 All Rights Reserved/Copyright 2008 All Rights Reserved/
Menggunakan:
:s/Copyright \zs2007\ze All Rights Reserved/2008/
Untuk informasi lebih lanjut, lihat
Anda dapat mencari kecocokan terakhir dengan mengelompokkan semua \(.*\)
,, tetapi kejadian terakhir dari pattern
. Kemudian keluar dengan grup yang ditangkap \1
,, dan menambahkan replacement
.
:%s/\(.*\)pattern/\1replacement/
\zs
solusi @ ryuichiro , dalam hal \1
pendekatan Anda secara fungsional setara, tetapi lebih bertele-tele. (Di sisi lain, mungkin lebih mudah diingat untuk beberapa, terutama jika mereka digunakan untuk rasa regex lainnya.))
Demi kelengkapan saya pikir saya akan memposting alternatif. Vim memiliki multi-item beberapa di antaranya mirip dengan pernyataan pencarian ekspresi reguler yang lebih standar (lookahead negatif / positif / lihat di belakang). /programming/2973436/regex-lookahead-lookbehind-and-atomic-groups
Dalam hal ini kami menginginkan tampilan negatif \@!
,, yang berarti kami ingin menegaskan bahwa atom yang mendahului item tidak terjadi setelah pola . Dalam hal ini atom adalah pola itu sendiri yang didahului oleh hal lain:
:%s/pattern\(.*pattern\)\@!/replacement/
Bagian di dalam tanda kurung adalah nol-lebar dan tidak termasuk dalam pertandingan sehingga tidak digantikan oleh substitusi.
:h \@!
untuk informasi lebih lanjut atau :h pattern-multi-items
untuk seluruh bagian yang mengandung variasi lookaround lainnya.
\zs
ada dalam jawaban Anda?