Vim:移动单词的结尾以全局启动

时间:2014-04-22 16:59:49

标签: regex vim

在阅读了Vim regexs之后,我的头疼了。

我想将 _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)

1 个答案:

答案 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