Вы можете использовать следующее решение:
Сначала используйте 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
. Который можно описать как пробел, которому предшествуют@<=
символы ( ) после позиции курсора.