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

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


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

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.


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