Rem*_*man 5 regex vim join lines
我无法找到如何加入所有行直到下一个条件发生(一行只有一个或多个数字)pe
输入:
1
text text text text (with numbers)
text text text text (with numbers)
2
this text
text text text text (with numbers)
text text text
3
text text text text (with numbers)
4
etc
Run Code Online (Sandbox Code Playgroud)
渴望输出:
1 text text text text (with numbers) text text text text (with numbers)
2 this text text text text text (with numbers) text text text
3 text text text text (with numbers)
4
etc
Run Code Online (Sandbox Code Playgroud)
我通常使用global/^/,+2 join但在上面的例子中,加入的行数并不总是3.
而不是命令+2范围的静态结束:join,只需为仅包含数字(/^\d\+$/)的下一行指定搜索范围,然后连接直到(-1)之前的行:
:global/^/,/^\d\+$/-1 join
Run Code Online (Sandbox Code Playgroud)
v/^\d\+/-j 会做的.
v执行函数为每个不匹配条件
^\d\+的条件:行以数字开头.
-j向后退一行连接.或者,如果您更喜欢将当前行加入上一行.
所以基本上我们将每个与你的条件不匹配的行加入前一行.