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.
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].
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.
@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.
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.
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 |),
Jawaban:
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$.
sumber
dw
, tapi saya kira saya hanya berasumsi akan ada perintah "hapus sisa baris ini". Misalnya baris saya memilikiip=|10.1.1.1
dengan|
menjadi lokasi kursor. Apakah ada perintah yang akan menghapus semua10.1.1.1
?d$
:!rm -f %
dan kemudian:q!
. Itu menghapus seluruh file.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.Seperti yang disebutkan orang lain: Anda dapat menggunakan
d$
atauD
( shift- d) untuk menghapus dari posisi kursor hingga akhir baris.Apa yang biasanya saya temukan lebih bermanfaat adalah
c$
atauC
( shift- c) karena akan menghapus dari posisi kursor sampai akhir baris dan menempatkan Anda dalam mode [INSERT].sumber
D
bagi kebanyakan orang, menurut saya, karena itu tidak membuat Anda kembali ke ruang di akhir baris.i
insert yang memasukkan sebelum kursor, dana
yang memasukkan setelah kursor. Jika kursor Anda ada di ujung baris dan Anda ingin memasukkan di ujung baris, Anda bisa menggunakana
.Salah satu hal yang menyenangkan tentang vi adalah struktur perintah logisnya.
d
diikuti 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,e
bergerak ke e nd dari kata saat ini, danw
bergerak ke awal berikutnya w ord; jadide
menghapus akhir kata saat ini, dandw
juga menghapus spasi putih berikut.sumber
<kbd>
untuk kunci aktual, bukan untuk urutan perintah. Misalnya<kbd>Ctrl</kbd>+<kbd>C</kbd>
, tapid$
.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.
sumber
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
):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.
Saya telah memilih Ctrl- lkarena
l
ada di bawah jari Anda. The Ctrl- ksudah digunakan untuk menyisipkan digraf.Saya telah mencari-
:h i_Ctrl
cari beberapa keybindings gratis, dan itu sebenarnya masalah yang lebih besar ketika datang untuk membuat cara pintas baru untuk melakukan tindakan di vim.sumber
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
|
),Menggunakan perintah 3Dakan menampilkan:
sumber