Jawaban lain yang ada semua tergantung pada definisi vim dan deteksi blok. Strategi saya untuk penghapusan semacam ini adalah menggunakan c
perintah yang dikombinasikan dengan f
gerakan dan karakter aktual untuk dihentikan. Ini kemudian akan benar-benar menghapus karakter berhenti, tetapi karena itu juga merupakan tombol terakhir yang Anda tekan mengulanginya dua kali memiliki biaya nol, dan itu akan memasukkannya lagi sejak c
perubahan ke mode penyisipan.
Untuk menjelaskan dengan contoh, untuk
func1(x|, func2(), y);
perintah c2f))
akan memberi
func1(x)|;
yang pada awalnya mungkin tampak kurang elegan daripada beberapa jawaban lain, namun perhatikan bahwa strategi ini bersifat universal dan tidak tergantung pada definisi blok.
Misalnya dengan
<div| class="some-class">text</div>
perintah cf>>
akan memberi
<div>|text</div>
Atau saat mengedit file csv suka
2016-11-29,question,vi|.stackexchange.com,10435
perintah cf,,
akan memberi
2016-11-29,question,vi,|10435
Saya sering menggunakan ini untuk menghapus sisa string, dari
printf("Hello world| - a boring example\n");
untuk
printf("Hello world\|n");
dengan cf\\
atau dari
print("Hello world| - a boring example");
untuk
print("Hello world"|);
dengan cf""
.
Ini memang mengubah posisi saat ini ke tempat yang sedikit berbeda dari yang diminta, dan juga berubah menjadi mode penyisipan. Tetapi saya ingin berbagi solusi masuk saya untuk menghapus apa pun yang tersisa.
C);
dalam kasus khusus ini.