Mengapa perintah garis bawah _ bermanfaat?

15

Saya agak bingung mengapa perintah garis bawah _, yang melompat ke awal baris (COUNT - 1) di bawah kursor, mendapat kuncinya sendiri. Kapan saya akan menggunakan ini daripada +atau ^?

Toothrot
sumber

Jawaban:

16

Pertanyaan bagus!

Sebagai gerakan dengan sendirinya, Anda benar, _bukan kunci yang sangat berguna.:h _

                            *_*
_  <underscore>     [count] - 1 lines downward, on the first non-blank
            character |linewise|.

Kata kuncinya di sini adalah "linewise". Jadi, jika tujuan Anda adalah untuk hanya memindahkan kursor, kemudian ^, jdan +semua mendapatkan pekerjaan yang dilakukan, dan tidak ada banyak titik untuk _. Tetapi sebagai argumen bagi operator, _sangat kuat.

Banyak pintasan tombol ganda sebenarnya hanya pintasan untuk _. Sebagai contoh,

dd -> d_
cc -> c_
yy -> y_
Y  -> y_

dll. Karena ini merupakan gerakan garis, itu pada dasarnya memilih seluruh baris untuk dioperasikan di mana pun kursor Anda mulai, sedangkan ^hanya bergerak dari karakter Anda ke non-blank pertama.

Ini membantu saya ketika berpikir tentang gerakan linear dan blockwise untuk membayangkan bahwa saya menekan salah satu vatau Vtepat sebelum gerakan. Jadi saya membayangkan d^setara dengan v^ddan saya membayangkan d_setara V_datau V^d. Tentu saja, Anda juga dapat mengesampingkan gerakan untuk memaksanya menjadi garis atau karakter. Jadi dv_sebenarnya persis sama dengan d^atau v^d, dan dVwseperti Vwdyang persis seperti d_.

Alasannya secara khusus garis "hitung-1" adalah agar 1dd(yang benar-benar d1_) menghapus satu baris penuh, 2dd(yang benar-benar d2_) menghapus 2 seluruh garis, 3ddmenghapus 3 seluruh garis, dll.

DJMcMayhem
sumber
1
Baiklah, tetapi apakah saya akan benar-benar menggunakannya? ddlebih mudah dari d_dan 3yjlebih mudah dari 4y_.
Toothrot
5
@toothrot Jika Anda membuat operator Anda sendiri dan ingin beroperasi pada n baris berikutnya .
DJMcMayhem
5
@ Trotrot Saya kira saya ingin mengklarifikasi sedikit. Pengeditan vim sehari-hari, tidak itu benar-benar tidak terlalu berguna. Saya hampir tidak pernah menggunakannya juga. Alasan itu berguna adalah karena itu adalah definisi dari banyak perintah yang berguna. ddmungkin lebih nyaman daripada d_, tapi itu karena ddhanya pemetaan d_. Dan itu juga berguna dalam vimscript.
DJMcMayhem
9
Beberapa tindakan yang bertindak berdasarkan "gerakan" mungkin tidak memiliki pintasan lainnya. Sesuatu seperti "gU_" akan huruf besar semua yang ada di baris saat ini, bahkan jika kursor tidak di awal baris.
bmb
1
@ MBB Bagaimana gUU? Saya pikir akan bermanfaat untuk menemukan contoh aktual di mana <operator>_akan digunakan.
Hotschke