Apakah ada alasan historis khusus untuk ini?
Latar Belakang - (Anda dapat melewati bagian ini jika Anda sudah mengerti pertanyaannya.)
Seperti yang vi
diketahui pengguna tingkat menengah / lanjutan , y
adalah perintah "yank" - perintah itu menarik (menyalin) teks yang ditentukan oleh perintah gerakan berikut. * Dengan demikian ye
menarik ke akhir kata, y0
menarik dari posisi kursor ke awal baris, y_
menarik seluruh garis saat ini, y$
menarik dari posisi kursor ke akhir garis saat ini, dll.
Perintah d
(hapus) dan perintah c
(ubah) dapat digunakan dengan semua gerakan ini juga.
dd
adalah sinonim untuk d_
dan menghapus seluruh baris saat ini. Demikian juga, cc
adalah sinonim untuk c_
dan akan mengubah baris saat ini (yaitu akan menghapus semua teks dan menempatkan Anda dalam mode penyisipan di awal baris). **
Perintah "yank" mengikuti konvensi ini; yy
akan menarik seluruh baris saat ini seperti y_
.
Ada set sinonim lain: D
adalah sinonim untuk d$
dan akan menghapus dari posisi kursor ke akhir baris. C
adalah sinonim untuk c$
dan akan mengubah teks dari posisi kursor ke akhir baris, menempatkan Anda dalam mode sisipkan untuk mengetik teks baru.
Namun, Y
adalah sinonim lain untuk yy
atau y_
dan akan menarik seluruh baris , bukan hanya dari kursor ke akhir baris seperti yang Anda harapkan dari C
dan D
pola.
Saya mengerti bahwa dalam Vim disimpan dengan cara ini untuk menjaga kompatibilitas dengan vi
, sebagaimana disebutkan dalam bantuan Vim di bawah :help Y
:
Jika Anda suka "Y" bekerja dari kursor ke akhir baris (yang lebih logis, tetapi tidak kompatibel dengan Vi) gunakan ": map Y y $".
Jadi ini adalah peninggalan dari vi
. Baik.
Tapi, mengapa perintah itu dirancang seperti itu di tempat pertama? Apakah ada logika untuk itu?
* Secara khusus itu menempatkan teks dalam register 0 dan menunjuk register yang tidak disebutkan namanya pada register 0.
** Meskipun tidak relevan dengan pertanyaan saya, S
sinonim lain untuk cc
atau c_
.