我有一个包含这些行的文本文件:[15]=new Option(“text1”,“25”);[16]=new Option(“text2”,“23”);[17]=new Option(“text3”,“12”);(and关于我们如何用文本#替换每一行?例如,第一行应该用text 1替换,第二行用text 2替换,等等。
a11xaf1n1#
作为:s的替代品并使用宏,我有时会发现:normal非常令人愉快。
:s
:normal
%norm df"f"d$
字符串我们可以缩短它,但使用;运动,它将重复f"运动,并使用D,它与d$相同
;
f"
D
d$
%norm df";D
型
mrphzbgm2#
读取:h /\(
:h /\(
%s/\Voptions[\d\+]=new Option("\(text\d\+\)","\d\+");/\1/g
字符串
rfbsl7qr3#
看起来你已经在源代码中有了它们。假设你有这样的行:[15]=new Option(“text#",“25”);...你想改成这样:[15]=new Option(“15”,“25”);...下面是您要做的:将第一行改为text 1,然后yank“text 1”
create a macro (qq) /text dw p ctrl+a b vwly q
字符串然后如果你有25行:做23@q23次调用宏,因为您已经手动执行了前两次。
v6ylcynt4#
这个正则表达式也应该工作:
:%s/^.\{-}\(".\{-}"\).*/\1
字符串部分^.\{-}匹配所有内容,直到组\(".\{-}"\),保留目标文本,最后\1进行替换。
^.\{-}
\(".\{-}"\)
\1
4条答案
按热度按时间a11xaf1n1#
作为
:s
的替代品并使用宏,我有时会发现:normal
非常令人愉快。字符串
我们可以缩短它,但使用
;
运动,它将重复f"
运动,并使用D
,它与d$
相同型
mrphzbgm2#
读取
:h /\(
字符串
rfbsl7qr3#
看起来你已经在源代码中有了它们。假设你有这样的行:
[15]=new Option(“text#",“25”);
...
你想改成这样:
[15]=new Option(“15”,“25”);
...
下面是您要做的:将第一行改为text 1,然后yank“text 1”
字符串
然后如果你有25行:做23@q
23次调用宏,因为您已经手动执行了前两次。
v6ylcynt4#
这个正则表达式也应该工作:
字符串
部分
^.\{-}
匹配所有内容,直到组\(".\{-}"\)
,保留目标文本,最后\1
进行替换。