ไปเลย:
:g/foo/t.|s//bar
เน่าเฟะ:
: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'
เนื่องจากg
คำสั่งจะอัพเดตรูปแบบการค้นหาดังนั้นคุณสามารถละเว้นรูปแบบที่จะแทนที่ในคำสั่งแทนที่ (การอ้างอิง: :h :g
ค้นหาsearch pattern
)
รุ่นเก่ากว่า:
:g/foo/norm! yyp:s/foo/bar^M
เน่าเฟะ:
: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
เพื่อแทรก^M
กดและCtrl+venter
หมายเหตุ : ฉันมากับรุ่น "เก่ากว่า" ก่อนที่ฉันจะเรียนรู้เกี่ยวกับt
คำสั่ง ฉันจะทิ้งไว้ แต่ฉันจะไม่แนะนำให้ใช้ อันแรกสะอาดกว่าตรงไปตรงมามากกว่า