在Gvim中使用正则表达式将标记中的行括起来

时间:2017-06-29 03:27:23

标签: regex vim

我有以下简单文字:

one
a line
more lines
more text
end

我想在>>中附上每一行和<<使用正则表达式。以下单独工作:

:%s/^/>>/g
:%s/$/<</g

但是,如何使用一个命令执行此操作。我试过跟随,但他们不工作:

:%s/^([.]+)$/>>\1<</g
:%s/\v^([.]+)$/>>\1<</g
:%s/([.]+)/>>\1<</g

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

:%s/.*/>>&<</

&表示matched whole part。并且不需要g标志。

答案 1 :(得分:2)

尝试使用以下内容:

:%s/^\(.*\)$/>>\1<</g

我发现您当前的尝试存在问题,例如:

:%s/^([.]+)$/>>\1<</g

使用[.]时,您正在匹配文字点,这是一个字符类。毫无疑问,大多数情况下这种模式不会匹配任何一条线,除非它完全由点组成。

此外,括号需要在Vim正则表达式中进行转义。

阅读this excellent SO question and answer了解详情。