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?


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.


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


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 #.


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.


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.


2
Tutup, ladalah tombol panah kanan Vim, jadi Anda benar-benar menghapusnya. Sebaliknya, d9hakan menghapus 9 karakter yang tersisa.
Walf
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.