Вы можете использовать следующее решение:
Сначала используйте v$для выделения текста от курсора до конца строки. Затем используйте следующую команду:
:s/\%V\ /_/g
\%VУказывают на изменение текста в ранее визуально выбранной области, см :h /\%V.
Если я возьму ваш пример:
function my_function(argument, another argument, but there are spaces)
Если мой курсор находится в 40-м столбце, и я использую команду, которую я только что написал, я получаю:
function my_function(argument, another argument,_but_there_are_spaces)
В ответ на ваш комментарий вы также можете использовать
\%# который соответствует от позиции курсора
\%>23c который соответствует после 23-го столбца.
\%>'m который совпадает после позиции знака
Видите :h /\%#, :h /\%>cи :h /\%>'m.
@ User9433424 дал способ использовать \%#в своем комментарии. Для шаблона с отметкой вы можете установить его с maпомощью:
:s/\%>'a /_/g
Ниже приведено объяснение шаблона, заданного @ User9433424:
: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
Вы захотите увидеть :h \vи:h /\@<=
\%#. Таким образом, вы можете использовать::s/\v(%#.*)@<= /_/g. Который можно описать как пробел, которому предшествуют@<=символы ( ) после позиции курсора.