vi pintas untuk menghapus "hingga karakter X berikutnya"

194

Saya mengerti bahwa vi memiliki tombol pintas untuk menghapus karakter, kata, dan garis dengan berbagai opsi.

Namun, saya tidak dapat menemukan ini:

  • hapus dari kursor ke karakter yang ditentukan berikutnya

Misalnya, saya dapat mengetik du"mengharapkan editor untuk "menghapus sampai "karakter berikutnya ditemukan"

Yang paling dekat yang saya tahu adalah di d9wmana 9jumlah kata yang akan dihapus.

Adakah yang tahu kalau ini mungkin?

kctang
sumber
Jika Anda tertarik dengan Vi dan Vim, mereka memiliki situs SE sendiri sekarang: Vi dan Vim
hidangan penutup

Jawaban:

303

Gunakan dtc, di mana c adalah karakter apa pun, misalnya untuk Anda, yang Anda inginkandt"

Ini akan dihapus hingga tetapi tidak termasuk c .

Jika Anda memiliki:

delete until exclamation point!

Dan kursor berada di ruang pertama dan Anda mengetik dt!, Anda akan mendapatkan:

delete!

Juga dfc.

Ini akan menghapus hingga dan termasuk c .

Menggunakan df!contoh yang sama di atas akan memberi Anda:

delete

Hampir setiap "gerakan" dapat digunakan untuk d, c, ydan perintah yang sama.

Arcege
sumber
7
Agaknya mnemonik adalah t untuk "sampai"? Jawaban bagus.
overthink
15
Anda juga dapat menghapus ke instance karakter sebelumnya dengan versi kapitalisasi dari perintah gerakan. Mungkin lebih bermanfaat untuk koma - dT,dan dF,.
joelostblom
3
Ini tidak berfungsi pada banyak baris.
0xcaff
3
Apakah ini dapat dilakukan melalui berbagai jalur?
Ray
2
Untuk melakukan sesuatu yang serupa pada rentang garis, pencarian biasa (seperti pada jawaban zpletan) dapat dilakukan: d/wordpencarian hingga word. Itu harus diikuti oleh enter (untuk menutup pencarian).
Eric O Lebigot
59
  • Untuk menghapus penerusan hingga tipe karakter 'X' dtX

  • Untuk menghapus maju melalui tipe karakter 'X' dfX

  • Untuk menghapus mundur hingga tipe karakter 'X' dTX

  • Untuk menghapus mundur melalui tipe karakter 'X' dFX

Mark Wong
sumber
30

Input dt # (bukan perintah:, gunakan seperti gerakan seperti G)

akan menghapus dari kursor sampai tetapi tidak termasuk #. Anda dapat mengganti char apa pun dengan #.

Jessie
sumber
2
Ini adalah jawaban yang benar! df # akan menghapus # juga.
Viet
telah mencari ini, ini luar biasa
Nadeem Khedr
18

Sepertinya @Arcege sudah menjawab pertanyaan, tetapi saya d/lmenghapus sampai karakter l; karakter lain juga berfungsi.

zpletan
sumber
3
Ini berfungsi untuk hal-hal di seluruh baris baru.
jasonzhao
Catatan: ini harus diikuti oleh Enter.
Eric O Lebigot
6

wpindah ke kata berikut. lpindah ke karakter berikut.

Jadi itu d9luntuk menghapus 9 karakter berikutnya.

Shun Zhang
sumber
2
Tutup, ladalah tombol panah kanan Vim, jadi Anda benar-benar menghapusnya. Sebaliknya, d9hakan menghapus 9 karakter yang tersisa.
Walf