आप निम्नलिखित समाधान का उपयोग कर सकते हैं:
पहले 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
:। जिसे@<=
कर्सर स्थिति के बाद ( ) वर्णों से पहले के स्थान के रूप में वर्णित किया जा सकता है ।