Bagaimana saya bisa menghapus garis dengan cepat di VIM mulai dari posisi kursor?

267

Saya ingin dapat menghapus sisa baris yang saya mulai di posisi kursor di VIM. Apakah ada perintah mudah untuk melakukan ini?

Untuk membantu menggambarkan, ini sebelum perintah.

The quick brown dog jumps over the lazy fox.
     ^
     |----- Cursor is here.

Ini setelah perintah

The q
     ^
     |----- Cursor is here.
Anthony
sumber

Jawaban:

430

(Diedit untuk memasukkan tambahan komentar yang bagus :)

Datau yang setara d$akan menghapus sisa baris dan meninggalkan Anda dalam mode perintah. Catau c$akan menghapus sisa baris dan menempatkan Anda dalam mode insert, dan teks baru akan ditambahkan ke baris.

Ini adalah bagian dari vitutordan vimtutor, "bacaan" yang bagus untuk pemula vim.

thiton
sumber
1
Hast, kupikir itu sesuatu yang mudah, aku memikirkan kombinasi ddiikuti oleh sesuatu. Saya pikir akan lebih cepat untuk mengirim pertanyaan di sini dan juga bermanfaat bagi orang lain yang secara default mencari online sebelum membaca manual.
Anthony
2
Atau C, satu-satunya cara "nyata" untuk mendapatkan kursor pada posisi yang ditunjukkan, meskipun itu menempatkan Anda dalam mode sisipkan.
Walter
1
@Anthony: Ada juga " ddiikuti oleh sesuatu" perintah -setara untuk D, di mana "sesuatu" adalah $gerak: d$.
ib.
2
Dan jika Anda ingin berakhir dalam mode sisipkan, gunakan C(atau c$)
Benoit
7
Saya menyadari bahwa solusi ini sudah dijawab tetapi saya mencari cara untuk menghapus seluruh baris dengan VIM di Google dan menemukan ini. Pilihan yang saya cari ternyata dddari mode perintah. Saya harap itu membantu orang lain yang menemukan ini.
Frito
41

Gunakan D. Lihat dokumen untuk informasi lebih lanjut.

lucapette
sumber
21

Anda mungkin juga tertarik C, itu juga akan menghapus akhir baris seperti D, tetapi juga akan menempatkan Anda dalam mode Sisipkan di lokasi kursor.

Xavier T.
sumber
9

Jalankan dalam mode perintah d$.

Robert Munteanu
sumber
8
Dadalah solusi yang lebih cepat untuk ini.
Sedrik
5

Ini adalah pertanyaan yang sangat lama, tetapi karena VIM masih relevan, sesuatu harus diklarifikasi.

Setiap jawaban dan komentar di sini pada Oktober 2018 merujuk pada apa yang biasanya dikenal sebagai tindakan "memotong", sehingga menggunakan salah satu dari mereka akan menggantikan apa pun yang saat ini ada dalam daftar VIM yang tidak disebutkan namanya . Register ini cenderung diperlakukan seperti copy / paste clipboard default, jadi tidak satu pun dari jawaban ini akan bekerja seperti yang diinginkan jika Anda menghapus sisa baris untuk menempelkan sesuatu di tempat yang sama sesudahnya, karena apa pun yang baru saja dihapus akan kemudian ditempelkan kemudian ditempelkan menggantikan apa pun yang ditarik sebelumnya.

Perintah hapus yang sebenarnya dalam konteks OP adalah "_D(atau "_Cjika mode penyisipan diinginkan) Ini mengirimkan konten yang dihapus ke dalam register lubang hitam , yang ditunjuk oleh "_, di mana ia tidak akan mengganggu siapa pun lagi (walaupun Anda masih dapat membatalkan tindakan ini menggunakan u).

Yang sedang berkata, apa pun yang disentak terakhir disimpan dalam register 0 , dan bahkan jika itu diganti dalam register yang tidak disebutkan namanya, itu masih bisa ditempel menggunakan "0p.

Pelajari lebih lanjut tentang register lubang hitam dan register secara umum untuk kesenangan VIM ekstra!

AFOC
sumber
4

Datau ddmenghapus dan menyalin garis ke register. Anda dapat menggunakan Vxyang hanya menghapus garis dan tetap dalam mode normal.

Bahman Eslami
sumber