Ini dia:
:g/foo/t.|s//bar
Membusuk:
:g/foo/ " start a global command applied on all lines matching 'foo'
t. " duplicate the current line (the cursor is now on the new line)
| " chain a new command
s//bar " substitute the last searched element with 'bar'
Karena g
perintah akan memperbarui pola pencarian, sehingga Anda dapat menghilangkan pola untuk menggantikan dalam perintah pengganti. (ref:, :h :g
cari search pattern
).
Versi yang lebih lama:
:g/foo/norm! yyp:s/foo/bar^M
Membusuk:
:g start a global command
/foo/ apply only on lines having 'foo'
norm! execute a normal command
yyp duplicate the line
:s//bar replace foo with bar on the line (the duplicated one)
^M add enter to execute the substitution
Untuk memasukkan ^M
pers Ctrl+vdan enter.
Catatan : Saya awalnya datang dengan versi "lebih lama", sebelum saya belajar tentang t
perintah. Saya akan meninggalkannya tetapi saya tidak akan merekomendasikan menggunakannya. Yang pertama lebih bersih lebih mudah.