Secara default, perintah tempel menggunakan "
register ("tidak bernama") . Secara efektif, perintah apa pun yang menulis ke register juga menulis ke register yang tidak disebutkan namanya, sehingga menarik, menghapus, dan mengubah semua memengaruhinya. Inilah sebabnya mengapa urutan yank-delete-paste Anda menempelkan teks yang dihapus alih-alih teks yang ditarik.
The 0
mendaftar dapat membantu di sini. Perintah menarik apa pun yang tidak menentukan register, masukkan teks yang ditarik ke dalam register 0
(sebagai tambahan "
). Ini tidak terpengaruh oleh operasi hapus atau ubah, jadi Anda dapat menggunakannya untuk menempelkan satu baris yang disentak beberapa kali walaupun Anda melakukan penghapusan atau perubahan tingkat menengah.
yy
: Register 0
dan "
keduanya sekarang memiliki jalur menarik.
- Pindah ke baris untuk mengganti.
dd
: Daftar "
sekarang memiliki baris yang dihapus, tetapi daftar 0
masih memiliki baris yang ditarik.
"0P
: Tempelkan baris yang awalnya ditarik dari register 0
.
- Pindah ke baris berikutnya untuk mengganti.
dd"0P
(sama seperti di atas)
(Karena cara kerja posisi kursor saat mengganti baris terakhir dari buffer, Anda akan ingin menggunakannya "0p
sebagai ganti "0P
.)
Ini sangat dekat jawaban Bruce Ediger , kecuali bahwa Anda tidak harus menentukan register saat awalnya menarik. Menggunakan satu atau lebih register bernama bisa sangat berguna meskipun jika Anda perlu (misalnya) mengganti beberapa baris dengan AAA
, tetapi baris lain dengan BBB
(masukkan AAA
register a
, dan BBB
dalam register b
(atau biarkan salah satu dari mereka dalam register 0
), kemudian tempel sesuai ).
Anda juga dapat menyisipkan dari 0
dalam line-bijaksana modus visual ( V
) untuk menyimpan keystroke: V"0p
.
Jika Anda tidak seperti memiliki jenis "0
, Anda mungkin menemukan pemetaan lebih nyaman:
noremap <Leader>p "0p
noremap <Leader>P "0P
vnoremap <Leader>p "0p
Pendekatan alternatif adalah menghapus ke _
register (" lubang hitam") . Ketika Anda menghapusnya, "
register tidak terpengaruh, sehingga urutan yank-delete-paste Anda masih dapat menempelkan teks yang ditarik ke bawah dari register yang tidak disebutkan namanya.
yy
: Daftar 0
dan "
keduanya sekarang memiliki jalur menarik.
"_dd
: Tidak ada perubahan pada register.
P
: Tempel teks yang awalnya ditarik dari register "
.
Sekali lagi, Anda mungkin menemukan pemetaan lebih nyaman:
noremap <Leader>d "_d
yy
(pindahkan ke baris untuk diganti)S<C-r>0<Esc>
. Memiliki keuntungan diulang dengan.
perintah.