È possibile utilizzare la seguente soluzione:
Primo utilizzo v$per selezionare il testo dal cursore alla fine della riga. Quindi utilizzare il seguente comando:
:s/\%V\ /_/g
Il \%V
indicano per modificare il testo nella zona precedentemente selezionata visivamente, vedere :h /\%V
.
Se prendo il tuo esempio:
function my_function(argument, another argument, but there are spaces)
Se il mio cursore si trova sulla quarta colonna e utilizzo il comando che ho appena scritto ottengo:
function my_function(argument, another argument,_but_there_are_spaces)
In risposta al tuo commento puoi anche usare
\%#
che corrisponde dalla posizione del cursore
\%>23c
che corrisponde dopo la 23a colonna.
\%>'m
che corrisponde dopo la posizione di un segno
Vedi :h /\%#
, :h /\%>c
e :h /\%>'m
.
@ User9433424 ha dato un modo di usare \%#
nel suo commento. Per il motivo con il segno puoi impostarlo con spirito mae quindi usare:
:s/\%>'a /_/g
Una spiegazione del modello fornita da @ User9433424 è la seguente:
: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
Ti consigliamo di vedere :h \v
e:h /\@<=
\%#
. Quindi, è possibile utilizzare::s/\v(%#.*)@<= /_/g
. Che potrebbe essere descritto come uno spazio preceduto da@<=
caratteri ( ) dopo la posizione del cursore.