Anda dapat menggunakan solusi berikut:
Pertama digunakan v$untuk memilih teks dari kursor ke akhir baris. Kemudian gunakan perintah berikut:
:s/\%V\ /_/g
The \%V
mengindikasikan 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 /\%>c
dan :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 \v
dan:h /\@<=
\%#
. Jadi, Anda bisa menggunakan::s/\v(%#.*)@<= /_/g
. Yang bisa digambarkan sebagai spasi diawali oleh (@<=
) karakter setelah posisi kursor.