我有一个要添加方法调用的项目列表。一个例子是最简单的。这就是我现在所拥有的:
assists: 12,
level: 14,
deaths: 5,
...
我想将该列表更改为:
assists: build_average(:assists),
level: build_average(:level),
deaths: build_average(:deaths),
...
是否可以将该方法调用添加到每一行的末尾,并将键的名称作为具有整齐Vim表达式的参数?
答案 0 :(得分:5)
更多正则表达式:
:%s/\(\w\+\):.\+/\1: build_average(:\1),/
请注意,这适用于文件中的所有行。要仅替换某个地区,请选择该地区(使用V
),然后使用:s
(结果为:<,>s/...
)。
在VIM中使用更复杂的正则表达式可能很棘手,因为元字符与“普通”正则表达式语法不同(您需要编写\+
而不是+
,但可以使用.
例如,没有逃避它。我发现本指南非常方便引用正则表达式的特殊VIM语法:http://vimregex.com/#pattern
答案 1 :(得分:4)
或者你可以录制一个宏:
q // record macro
q // assign it to letter 'q'
0 // go to start of line
/:<ENTER> // search for ':'
l // move cursor 1 position to the right
d$ // delete to end of line (line is now 'assists:')
yyp // duplicate current line (cursor moves 1 line down)
k // move cursor up
A build_average( // append " build_average("
<ESC> // exit edit mode
J // join next line
A ), // append " ),"
<ESC> // exit edit mode
j // move 1 line down
q // stop recording macro
2@q // execute macro 'q' 2 times
答案 2 :(得分:2)
更多正则表演体操:
:%s/\v(\w+):\s+\zs.*\ze,/build_average(:\1)/
解密它:
:help \v
:help \w
:help \s
:help \zs
:help \ze
:help \1