Apa urutan tercepat untuk dihapus sampai akhir baris setelah posisi kursor?
Contoh:
Saya ingin menghapus baris ini dengan cara yang lebih cepat
Sequence: 5eD
akan menghapus karakter kata terakhirline
Saya ingin menghapus lin ini
Bergerak berkeliling dengan vim sering menempatkan saya pada karakter pertama atau terakhir dari sebuah kata, memaksa saya untuk bergerak dengan satu penekanan tombol lagi setiap kali saya ingin menghapus ke akhir baris (dalam contoh di atas, dengan menambahkan satu gerakan ke kanan: 5elD
). Apakah ada cara yang lebih efisien (dengan memindahkan setelah akhir kata atau dengan menghapus setelah kursor)?
cursor-motions
Pierre-Jean
sumber
sumber
6wD
meninggalkan spasi setelah kata terakhir, tetapi setidaknya teks yang terlihat adalah yang Anda inginkan.6wDx
menyelesaikan pekerjaan, tetapi kemudian Anda berada di empat penekanan tombol lagi.Jawaban:
D
adalah perintah inklusif yang bekerja di atas gerakan yang menyertakan kursor di satu ujung dan karakter yang dapat dicetak terakhir di baris di ujung lainnya. Ada AFAIK tidak ada cara bawaan untuk mengubah perintah inklusif menjadi perintah eksklusif dan sebaliknya.Solusi terberat adalah dengan mendefinisikan operator Anda sendiri dan gerakan / objek teks.
Solusi yang agak ringan adalah mendefinisikan pemetaan untuk kasus sudut tersebut.
Solusi yang bahkan lebih ringan - tetapi membosankan - adalah menghabiskan beberapa penekanan tombol dalam mode visual.
Atau, Anda bisa bergerak dengan sedikit lebih "gesit":
sumber
Ada beberapa cara untuk mencapai apa yang Anda inginkan:
Semua ini dikenakan biaya hanya +1 keystroke.
Jika menghapus mulai dari posisi saat ini +1 dimungkinkan, maka masuk akal juga untuk meminta penghapusan dari posisi saat ini -1. Itu akan menimbulkan pertanyaan tentang perintah lain juga, misalnya menghapus sampai akhir file dari baris saat ini +1, -1, dan seterusnya.
Bagaimana ini bisa berhasil? Saya hanya melihat dua cara yang mungkin:
Jadi, saya tidak melihat cara untuk memiliki sesuatu yang lebih baik daripada fitur saat ini :-)
Saya setuju bahwa agak disayangkan bahwa tidak ada perintah "atom" untuk dihapus dari karakter berikutnya. Saya melihat penggunaan praktis dari apa yang Anda tanyakan: ketika memotong teks, saya sering ingin menghapus mulai dari karakter spasi, karena saya tidak ingin meninggalkan spasi spasi di akhir baris (Git mengeluh tentang itu, sebagai contoh). Dan perintah lompat kata
w
dane
tidak cocok untuk ini, karenaw
lompat ke huruf pertama dane
lompat ke huruf terakhir, dan tidak ada jalan pintas untuk melompat pada spasi setelah kata, kecuali pencarian eksplisit sepertif
. Jadi saya mengerti dan bahkan membagikan kebutuhan Anda. Saya hanya tidak melihat di mana ini dapat diperas dalam fungsi yang ada.Alternatif terbaik yang bisa saya pikirkan adalah merekam tindakan dalam makro, katakanlah
d
. Di akhir kata (pada huruf terakhir), rekam seperti ini:Kemudian, Anda dapat mengulangi tindakan ini di akhir kata lain dengan
@d
. Untuk melakukannya berulang kali, Anda bisa melakukannya@@
. Saat melakukannya berulang kali ini lebih cepat untuk diketik daripadalD
, tetapi ini mungkin tergantung pada selera Anda. Jika Anda tidak melakukannya berulang kali maka makro tidak benar-benar membantu, karena itu adalah jumlah penekanan tombol yang sama (+ penciptaan makro).sumber