Mengapa p menempelkan baris yang disalin setelah baris saat ini, bukan setelah kata saat ini?

12

Misalkan saya memiliki empat baris berikut:

line1
line2
line3
line4

Sekarang jika saya pergi ke line1dan melakukan yyyang menyalin baris dan kemudian pergi untuk memulai line3dan melakukan tempel menggunakan 'p', saya akan mendapatkan

...
line3
line1
line4
....

Mengapa itu menempel line1setelah line3di baris baru?

Meskipun demikian, inisial saya adalah karena karakter baris baru $ dilampirkan pada baris3 dan ketika saya menekan pvim dianggap line3$sebagai satu kata sehingga disisipkan setelahnya line3$. Namun sepertinya pemahaman saya salah. Karena jika saya melakukan ini line3 $dan kemudian melakukan pdi awal baris saya mendapatkan hasil yang sama.

Mengapa pmembuat baris baru dan menempel di baris baru setelahnya line3?

James Franco
sumber

Jawaban:

21

Saat Anda menghapus baris menggunakan dd, Anda melakukan penghapusan secara garis .

The pperintah pasta setelah posisi kursor. Karena register default diisi dengan konten linewise, itu berarti ia akan menempel setelah baris kursor aktif.

Jika Anda telah menghapus isi baris dengan cara karakter (misalnya, 0D), maka register akan bersifat karakter dan karena itu ditempelkan setelah karakter kursor aktif.

Secara umum, perilaku harus mengikuti apa yang diharapkan dari delete / yank dan paste. Namun, dimungkinkan untuk memodifikasi kegunaan-wise register menggunakan getreg () / setreg () .

Hati-hati melakukannya. Diberikan contoh awal Anda, hanya mengubah register menjadi characterwise tidak menghapus baris baru yang merupakan bagian dari penghapusan. Itu hanya mengubah bagaimana paste terjadi.


Untuk rekomendasi tentang skenario spesifik menghapus seluruh baris tetapi menempelkannya secara karakter, lihat posting ini .

jamessan
sumber