Anda dapat menggunakan solusi berikut:
Pertama digunakan v$untuk memilih teks dari kursor ke akhir baris. Kemudian gunakan perintah berikut:
:s/\%V\ /_/g
The \%Vmengindikasikan untuk mengubah teks di daerah yang sebelumnya visual yang dipilih, lihat :h /\%V.
Jika saya ambil contoh Anda:
function my_function(argument, another argument, but there are spaces)
Jika kursor saya ada di kolom ke-40 dan saya menggunakan perintah yang baru saya tulis, saya dapat
function my_function(argument, another argument,_but_there_are_spaces)
Sebagai jawaban atas komentar Anda, Anda juga dapat menggunakan
\%# yang cocok dari posisi kursor
\%>23c yang cocok setelah kolom ke-23.
\%>'m yang cocok setelah posisi tanda
Lihat :h /\%#, :h /\%>cdan :h /\%>'m.
@ User9433424 memberi cara untuk digunakan \%#dalam komentarnya. Untuk pola dengan tanda, Anda dapat mengaturnya dengan akal madan kemudian menggunakan:
:s/\%>'a /_/g
Penjelasan tentang pola yang diberikan oleh @ User9433424 adalah sebagai berikut:
:s/\v(%#.*)@<= /_/
:s/ substitution command
\v Enable the very magic mode
%#.* Any characters from the cursor position
@<= Check for matches just before what follows
space Followed by a space
/_/ Substitute the matches by underscores
Anda akan ingin melihat :h \vdan:h /\@<=
\%#. Jadi, Anda bisa menggunakan::s/\v(%#.*)@<= /_/g. Yang bisa digambarkan sebagai spasi diawali oleh (@<=) karakter setelah posisi kursor.