A :
A()
A :
A(int)
to
A : A()
A : A(int)
A()是我正在搜索的模式(多行),并尝试将其附加到上一行。
答案 0 :(得分:10)
使用
:norm J
适用于您当前的输入,但我认为搜索是必需的,因此您可以使用这样的全局命令
:g/\vA\(.{-}\)/normal kJ
击穿
g -- start global command
\vA\(.{-}\)/ -- search for A followed by (<anything>)
normal kJ -- for each match, execute k (line up), J (join lines)
修改 (cudo's to Peter)
在命令行模式下-j
与正常情况下的kJ
等效,您可以将其缩短为
:g/\vA\(.{-}\)/-j
甚至更短
:g/\vA\(.*\)/-j
但我个人更喜欢懒惰({ - })而不是贪婪(*)量词。
答案 1 :(得分:0)
我会去代替:
:%s#^\s*\(\k\+\)\s*:\zs\s*\n\_s*\ze\1(.*)# #
这样,它会检查冒号两边的名称是否匹配 - 它可以是A
,foobar
,B
,任何东西,而你不是需要每次都指定它。
\zs
和ze
分隔模式(同一行上的任何空格,换行符和任何空格(包括换行符))将用单个空格替换。围绕\z
的内容作为匹配适用的上下文。