VIM: Menghapus dari posisi saat ini sampai spasi

172

Seringkali ketika mengembangkan saya dihadapkan dengan objek bersarang yang ingin saya hapus dari kode di tengah baris seperti ini:

htmlDoc.WriteLine("<b><h3>" + this.cbAllSyncs.SelectedItem.ToString() + "</h3></b>");

Bagian yang ingin saya hapus adalah:

this.cbAllSyncs.SelectedItem.ToString()

Saya tahu saya bisa menghitung jumlah kata dan titik dan masuk 7dwuntuk menghapus dari posisi kursor saya saat ini "ini". Namun, apa yang ingin saya lakukan adalah tidak harus menghitung sama sekali dan menghapus ke ruang angkasa dengan satu perintah. Apakah ini mungkin?

Blake Blackwell
sumber

Jawaban:

343

Coba dtspace. Secara umum dtxmenghapus dari posisi saat ini sampai sebelum x. Hanya txmemindahkan kursor ke sebelum karakter xdi baris saat ini.

Untuk menghapus hingga dan termasuk ruang, gunakan dfspace.

ya
sumber
2
Ini sangat bagus! Ini juga memberi saya beberapa fleksibilitas tambahan untuk sampai ke titik-titik tertentu lainnya dalam objek itu. Terima kasih!
Blake Blackwell
27
df<space>menghapus upto dan termasuk spasi berikutnya.
glenn jackman
5
sama-sama berguna, dfT <spasi> dihapus ke ruang sebelumnya.
hgmnz
3
Anda juga dapat menambahkan hitungan tepat sebelum tmenghapus hingga banyak karakter. mis. d2t<space>akan menghapus hingga dua spasi.
Waseem
7
Saya selalu menggunakan mnemonic tsebagai 'till stackoverflow.com/questions/7409134/...
acw
71

Anda dapat menggunakan dWatau dEseperti yang disarankan @glenn jika Anda tidak ingin menghapus spasi itu sendiri.

Sebuah KATA (huruf besar W) terdiri dari urutan karakter non-kosong, dipisahkan dengan spasi.

Lihatlah kata gerakan .

CMS
sumber
1
Jika saya dapat memilih dua jawaban saya akan, karena ini menyelesaikan pertanyaan spesifik yang saya tanyakan. Terima kasih untuk tautannya!
Blake Blackwell
5
atau dE- hapus sampai akhir urutan karakter non-kosong (tidak termasuk kosong berikut)
glenn jackman
@BlakeBlackwell Siapa bilang Anda tidak bisa memilih dua jawaban? Saya sudah melakukannya pada pertanyaan ini. Ini adalah info yang berguna.
javadba
20

salah satu solusi yang mungkin adalah menggunakan hapus dengan pencarian.

jadi ketik d/<space>dan vim akan menghapus sampai menyentuh spasi.

barkmadley
sumber
2
Ini lebih umum daripada dWkarena Anda juga dapat menggunakannya untuk menghapus dari kursor ke karakter apa pun, seperti 2d/+, dalam hal ini - yang juga akan menghapus rangkaian String.
Dave Jarvis
1
Anda dapat melakukan 2dW dan ini berfungsi dengan baik. sebenarnya saya menganggapnya solusi yang lebih baik karena juga akan bekerja dengan tab dan spasi putih lainnya. Itu juga menghapus spasi spasi tambahan yang ingin Anda hapus sampai.
barkmadley
15

Jika Anda ingin menghapus dari mana saja di dalam WORD, dan dalam satu perintah, cukup gunakan daW

(Anda tentu saja dapat menggunakan dawjika Anda ingin membatasi satu kata)

Saya menggunakannya cukup banyak karena itu memindahkan langkah ke awal kata (dalam kasus Anda)

Louis
sumber
daw dan daW berperilaku sama untuk saya - keduanya menghapus seluruh kata tidak peduli huruf mana kursor saya aktif. Tidak yakin kenapa.
Will
daw tidak akan menghapus spasi putih setelah kata, sedangkan daW akan
Louis
4
  • hapus untuk posisi saat ini ke contoh karakter spesifik "

    dt "
  • hapus kata dari kursor posisi aktif hingga akhir kata

    dw
  • hapus seluruh kata kursor pada terlepas dari posisi kursor pada kata, ini juga menempatkan Anda dalam mode penyisipan untuk memungkinkan Anda memasukkan segera.

    diw
Naseeruddin VN
sumber
2

dtspaceadalah jawaban untuk pertanyaan Anda, tetapi df+sepertinya itu akan menyelesaikan masalah Anda dengan lebih baik.

Dan Goldstein
sumber
Itu tidak melakukan apa pun untuk saya.
Guillermo Siliceo Trueba