dwc*_*las 37 vim replace wildcard
例如,我有一堆带有公共前缀和后缀的值,例如:
fooVal1Bar;
fooVal2Bar;
fooVal3Bar;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,所有变量名称的开头和结尾都foo以及结束Bar.我想用一个查找和使用之间找到了随机变量名称替换foo和Bar.说我已经有变量Val1,Val2,Val3,和Val1Old,Val2Old和Val3Old定义.我会找到一个替代品,类似于:
:%s/foo<AnyString>Bar/foo<AnyString>Bar = <AnyString> + <AnyString>Old
Run Code Online (Sandbox Code Playgroud)
这将导致:
fooVal1Bar = Val1 + Val1Old;
fooVal2Bar = Val2 + Val2Old;
fooVal3Bar = Val3 + Val3Old;
Run Code Online (Sandbox Code Playgroud)
我希望很明显我想做什么,我在vim帮助或网上找不到任何关于用通配符字符串替换的东西.我能找到的最多的是搜索通配符字符串.
Ren*_*ger 55
我相信你想要的
:%s/foo\(\w\+\)Bar/& = \1 + \1\Old/
Run Code Online (Sandbox Code Playgroud)
说明:
\w\+找到一个或多个角色的出现.前面的foo和跟随Bar确保这些匹配的字符只在a foo和a 之间Bar.
\(...\) 存储此字符,以便它们可以用于替换的替换部分.
& 复制匹配的内容
\1是\(....\)部件中捕获的字符串.
您需要捕获要保存的内容。尝试这样的事情:
%s/\(foo\(\w\+\)Bar\);/\1 = \2 \2Old/
Run Code Online (Sandbox Code Playgroud)
或者,您也可以用魔术清理一下:
%s/\v(foo(\w+)Bar);/\1 = \2 \2Old/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33858 次 |
| 最近记录: |