Aşağıdaki çözümü kullanabilirsiniz:
İlk v$önce imleçten satırın sonuna kadar metni seçmek için düğmelerini kullanın . Ardından aşağıdaki komutu kullanın:
:s/\%V\ /_/g
Daha \%V
önce görsel olarak seçilen alandaki metnin değiştirileceğini belirtin, bkz :h /\%V
.
Örneğinizi alırsam:
function my_function(argument, another argument, but there are spaces)
İmlecim 40. sütundaysa ve az önce yazdığım komutu kullanırsam:
function my_function(argument, another argument,_but_there_are_spaces)
Yorumunuza cevap olarak şunları da kullanabilirsiniz:
\%#
imleç konumundan eşleşen
\%>23c
23. sütundan sonra eşleşir.
\%>'m
bir işaretin konumundan sonra eşleşen
Bkz :h /\%#
, :h /\%>c
ve :h /\%>'m
.
@ User9433424 yorumunda kullanmanın bir yolunu verdi \%#
. İşaretli desen için zekayı ayarlayabilir mave ardından kullanabilirsiniz:
:s/\%>'a /_/g
@ User9433424 tarafından verilen paternin açıklaması aşağıdadır:
: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
Görmek isteyeceksiniz :h \v
ve:h /\@<=
\%#
. Yani, kullanabilirsiniz::s/\v(%#.*)@<= /_/g
. Bu@<=
, imleç konumundan sonra ( ) karakterden önce gelen bir boşluk olarak tanımlanabilir .