在阅读了Vim regex
s之后,我的头疼了。
我想将以 _bar
结尾的所有单词更改为以 bar_
开头的单词。
例如:
var variable_foo = "foo",
more_foo = "foo";
会变成:
var foo_variable = "foo",
foo_more = "foo"; // New variable names
我知道答案将涉及:%s/<something>/<something else>/g
。
对于像这样的编码风格的单词边界,答案应该是健壮的:
(inside_parens_foo)
更改为
(foo_inside_parens)
答案 0 :(得分:4)
正如@devnull所说,你需要使用反向引用:
:%s/\(\w\+\)_\(\w\+\)/\2_\1/g
使用\w
捕获字符等字[0-9A-Za-z_]
。我还建议使用c
标志来确认更改。
正如@benjifisher所说,使用\v
打开“非常神奇”会减少线路噪音:
:%s/\v(\w+)_(\w+)/\2_\1/g
如需更多帮助,请参阅:
:h :s_c
:h \1
:h /\w
:h /\+
:h /\v