[英]Regex in Vim- inserting blank line before numbered lines
我有以下文字:
Title line
1. First list
First line
Second line
2. Second list
Oranges
Mangoes
3. Stationary
Pen
Pencils
Etc
我想在每个编号行之前添加一个空行,以便上面的文字如下所示:
Title line
1. First list
First line
Second line
2. Second list
Oranges
Mangoes
3. Stationary
Pen
Pencils
Etc
我尝试了以下代码,但它无法正常工作:
%s/^(\d)/\r\1/g
和
%s/(^\d)/\r\1/g
和
% s/^([0-9])/\\r\\1/gc
问题在哪里以及如何解决。 谢谢你的帮助。
您应该在VIM语法中转义括号,以表示它是一个特殊的集群:
%s/^\(\d\)/\r\1/g
或者使用匹配结束零宽度断言 ( \\ze
)令牌:
%s/^\ze\d/\r
要使用捕获组()
而不必转义它们,请使用\\v
very magic(参见:h /magic
)
:%s/\v^(\d)/\r\1/
请注意, g
标志是多余的,因为在行的开头只能有一个匹配
由于替换部分需要整个匹配的字符串,因此可以简单地使用&
或\\0
而无需显式捕获组
:%s/^\d/\r&/
在评论中提到
:g/^\d/norm O
g
命令允许过滤行并在这些行上执行命令,如norm O
打开上面的新行。 默认范围是整个文件,因此不需要%
使用substitute命令,这将是:g/^\\d/s/^/\\r/
请参阅:h :g
和:h ex-cmd-index
以获取要使用的命令的完整列表:g
你可以使用全局命令, :g
来执行一个空:put
在匹配的数字之前:put
每一行, ^\\d
。
:g/^\d/pu!_
注意:使用黑洞寄存器, "_
,结合:put
给我们空行。
有关更多帮助请参阅:
:h :g
:h /\d
:h :put
:h quote_
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.