Hapus dari kursor ke akhir baris pada VI


301

Saya tahu saya mungkin telah melihat ini jutaan kali di semua dokumen VI yang saya baca, tetapi saya tidak bisa menemukan penghapusan dari kursor hingga akhir perintah baris.


3
Anda salah ketik di sini - Anda mengucapkan "ujung baris" di judulnya, tetapi "ujung kata" di pertanyaan.
Cascabel

Jawaban:


449

Perintah dwakan menghapus dari posisi kursor saat ini ke awal karakter kata berikutnya. Perintah d$(perhatikan, itu tanda dolar, bukan 'S') akan menghapus dari posisi kursor saat ini ke akhir baris saat ini. Dadalah sinonim untuk d$.


Ya saya tahu dw, tapi saya kira saya hanya berasumsi akan ada perintah "hapus sisa baris ini". Misalnya baris saya memiliki ip=|10.1.1.1dengan |menjadi lokasi kursor. Apakah ada perintah yang akan menghapus semua 10.1.1.1?
Falmarri

3
@ Falmarri - Saya minta maaf, saya harus salah mengerti pertanyaan Anda. Ada perintah untuk itu:d$
Tok

84
D (Shift + d) juga merupakan sinonim untuk d $.
Neth

5
@Andy, tugasnya adalah menghapus dari kursor ke akhir baris. Jika Anda menganggap menghapus lebih dari itu sebagai "melakukan pekerjaan," Anda juga bisa menggunakan :!rm -f %dan kemudian :q!. Itu menghapus seluruh file.
Wildcard

2
@Amir Cukup gunakan d^('d' + caret) ... pada dasarnya d + setiap karakter yang biasanya akan menggerakkan kursor saya pikir, tapi saya belajar Vim sendiri, jadi saya bisa salah tentang itu.
JakeD

41

Seperti yang disebutkan orang lain: Anda dapat menggunakan d$atau D( shift- d) untuk menghapus dari posisi kursor hingga akhir baris.

Apa yang biasanya saya temukan lebih bermanfaat adalah c$atau C( shift- c) karena akan menghapus dari posisi kursor sampai akhir baris dan menempatkan Anda dalam mode [INSERT].


2
BAGUS!!! Ini jauh lebih baik daripada Dbagi kebanyakan orang, menurut saya, karena itu tidak membuat Anda kembali ke ruang di akhir baris.
Elijah Lynn

Mengapa jawaban ini disembunyikan di sini? Ini adalah fungsi yang benar-benar saya cari ketika saya datang ke sini.
M_M

@ElijahLynn seharusnya tidak menjadi masalah. Vim memiliki dua cara utama untuk masuk ke mode iinsert yang memasukkan sebelum kursor, dan ayang memasukkan setelah kursor. Jika kursor Anda ada di ujung baris dan Anda ingin memasukkan di ujung baris, Anda bisa menggunakan a.
Lie Ryan

1
Tujuannya adalah melakukannya dalam satu operasi, bukan dua. Stroke kunci ekstra = gesekan ekstra.
Elijah Lynn

36

Salah satu hal yang menyenangkan tentang vi adalah struktur perintah logisnya. ddiikuti oleh perintah gerak d dihapus ke target gerakan itu. $bergerak ke akhir baris (mnemonic: like in regexps). Jadi, d$hapus sampai akhir baris. Demikian pula, ebergerak ke e nd dari kata saat ini, dan wbergerak ke awal berikutnya w ord; jadi demenghapus akhir kata saat ini, dan dwjuga menghapus spasi putih berikut.


1
@gioele Saya gunakan <kbd>untuk kunci aktual, bukan untuk urutan perintah. Misalnya <kbd>Ctrl</kbd>+<kbd>C</kbd>, tapi d$.
Gilles

@Gilles Kamu benar. Saya baru saja mencoba d ^ dan itu dihapus dari posisi kursor ke garis mulai.
ka3ak

Saya selalu menggunakan (d) elete (a) (w) ord untuk menghapus kata-kata :)
Błażej Michalik

20

Anda mungkin ingin menggunakan D. Pindahkan kursor ke karakter pertama yang ingin Anda hapus, lalu tekan shift-D. Semuanya hilang. Sebenarnya, ini ada di buffer cut default, jadi Anda dapat P atau p menempelkannya kembali.

Saya menggunakan Dp (hapus ke akhir baris, lalu pasang kembali), pindah ke akhir baris lain, lalu p lagi untuk menempelkan teks yang sama di akhir baris lainnya ini. Bekerja sangat baik dalam file konfigurasi, di mana Anda perlu meletakkan beberapa URL yang rumit di dua tempat atau lebih.


Mungkin Vim minimal yang dia gunakan.
polemon

0

Saya pikir cara pintas mode insert bisa berguna.

Dalam mode sisipkan mungkin akan lebih baik mulai mengubah sampai akhir baris (letakkan ini di Anda ~/.vimrc):

inoremap <C-l> <C-o>C

Jadi Anda telah, seperti yang telah dikatakan, Ddalam mode normal dan Ctrl+ ldalam mode insert. Seperti yang Anda lihat, Anda juga Cmulai mengubah hingga akhir baris.

<C-o> ......... insert normal keystroke in insert mode

Saya telah memilih Ctrl- lkarena lada di bawah jari Anda. The Ctrl- ksudah digunakan untuk menyisipkan digraf.

Saya telah mencari- :h i_Ctrlcari beberapa keybindings gratis, dan itu sebenarnya masalah yang lebih besar ketika datang untuk membuat cara pintas baru untuk melakukan tindakan di vim.


0

Untuk menghapus rentang garis dari setelah posisi kursor, 3Dakan menghapus dari kursor hingga akhir baris, serta dua baris berikutnya sepenuhnya (yaitu, menghapus 3 baris setelah posisi kursor).

misalnya untuk teks berikut (kursor diwakili sebagai |),

If there's a cursor |in the line
here
we
go

Menggunakan perintah 3Dakan menampilkan:

If there's a cursor
go
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.