Hapus dari kursor hingga kemunculan karakter x

15

Saya tahu bahwa saya dapat menghapus dari kursor sampai dan termasuk kemunculan pertama karakter x dengan d/x<CR>atau dengan v/x<CR>djika saya ingin melihat pilihan pertama dan kemudian menghapus. Bagaimana cara menghapus dari posisi kursor saat ini sampai n th terjadinya x ?

Misalnya, jika kursor adalah setelah spasi pertama dalam

yada yada yada
yada yada x
yada yada yada x
yada yada x

xx

dan saya mengetik perintah untuk menghapus hingga x ketiga hasilnya harus:

yada
xx

Erwin Rooijakkers
sumber

Jawaban:

21

Anda dapat melakukan :

wd4/x<Enter>

Jika Anda mulai di kiri atas teks Anda

Penjelasan

  • w : pindah ke awal kata berikutnya
  • d : menghapus
  • 4/x<Enter> : sampai kemunculan ke-4 x

Jika Anda tidak tahu berapa kali Anda ingin melakukannya sebelumnya, Anda juga dapat melakukannya: d/x<Enter>lalu tekan .untuk mengulang

edi9999
sumber
5
Bonus Tip: ini juga bekerja dengan fdan teman-teman ( F, t, T, ;): misalnya 2fxakan membawa Anda ke kedua x, atau 2;akan mengulangi yang terakhir fdua kali.
Martin Tournoij
1
@Carpetsmoker: Ini hanya berfungsi untuk huruf pada baris saat ini.
Jürgen Krämer
5

Anda dapat melakukan ini dengan mengetik

<n>df<x>

dimana:

<n> is the number of occurrence of particular character
df<x> means delete till you find the occurrence of character x
kapil
sumber
0
<n>macro 

biasanya digunakan dalam vim untuk mengulangi makro "n" kali.

jadi untuk menghapus sampai kemunculan x pertama, Anda akan menggunakan 1dfx. Demikian pula, untuk menghapus hingga kemunculan x yang ke-3, Anda akan menggunakan 3dfx.

thenakulchawla
sumber
1
Saya pikir Anda merindukan kata "makro": dalam vim makro adalah urutan kunci yang dicatat dalam register dan panggil dengan @xmana xregister Anda. Yang Anda maksud adalah perintah mode normal.
statox
Ya saya maksudkan perintah normal. Tapi ini berlaku untuk makro juga. Kita dapat menjalankan makro n kali dengan menambahkan angka sebelum makro.
thenakulchawla
1
Ya itu benar. Saya baru saja menunjukkan bahwa <n>macroitu bukan notasi standar dalam vim untuk makro dan karena jawaban Anda menggunakan perintah mode normal, itu hampir sama dengan yang kapil.
statox
0

Diberikan:

yada yada yada$
yada yada yada x$
yada yada yada x$
yada yada yada x$
xx$

di mana yang $mengindikasikan ujung garis ( :set listmode), jika kursor berada di awal detik yadadi baris pertama, pertama kita harus mencadangkan ke ruang sebelumnya menggunakan h, untuk memasukkannya dalam penghapusan. Lalu saja 4d/xEnter. Dengan kata lain, hanya hitungan di depan d/x. Hasilnya persis:

yada$
xx$
Kaz
sumber