Regex 在Vim中将此行后的空行移到此行前
我有以下案文:Regex 在Vim中将此行后的空行移到此行前,regex,vim,substitution,Regex,Vim,Substitution,我有以下案文: A simple line TITLE1: Another usual line TITLE2: More usual lines here TITLE3: Last line of this sample text. 我想将以上内容转换为: A simple line TITLE1: Another usual line TITLE2: More usual lines here TITLE3: Last line of this sample text. 因此
A simple line
TITLE1:
Another usual line
TITLE2:
More usual lines here
TITLE3:
Last line of this sample text.
我想将以上内容转换为:
A simple line
TITLE1:
Another usual line
TITLE2:
More usual lines here
TITLE3:
Last line of this sample text.
因此,我想删除标题行后面的空行,而在标题行之前添加空行。标题行均以“:”结尾的标识。
我尝试了以下代码:%s/(.+):\r/\n\1:/g
但它不起作用 如果我正确理解您的要求,我会选择
:g/{cmd}
而不是:s/../../
:
g/:$/norm JO
如果您不想在:
后面留空格,请在J
之前添加一个g
说明:
- 对于所有匹配的
,执行正常模式命令pat
和J
O
确实连接,这意味着下一个换行符“已删除”J
在当前行之前添加一个空行O
标题
行上移动光标,按JO
查看发生了什么
如果您需要进一步解释/详细信息,请阅读:
:h :g
:h :norm
:h J (or :h gJ)
:h O
如果我正确理解您的要求,我会选择
:g/{cmd}
而不是:s/../../
:
g/:$/norm JO
如果您不想在:
后面留空格,请在J
之前添加一个g
说明:
- 对于所有匹配的
,执行正常模式命令pat
和J
O
确实连接,这意味着下一个换行符“已删除”J
在当前行之前添加一个空行O
标题
行上移动光标,按JO
查看发生了什么
如果您需要进一步解释/详细信息,请阅读:
:h :g
:h :norm
:h J (or :h gJ)
:h O
它是如何工作的
: ............... command
g ............... global
/TITLE/ ......... all lines with TITLE
m+1 ............. move to the next line
它是如何工作的
: ............... command
g ............... global
/TITLE/ ......... all lines with TITLE
m+1 ............. move to the next line
@ctwheels能否基于此提供完整答案-正确的命令行和简要说明?@ctwheels能否基于此提供完整答案-正确的命令行和简要说明?是的,它工作得非常好。简单解释一下它是如何工作的,这对大家都有帮助。@RN如你所愿。在答案中添加。非常好的答案!特别是使用
:g/{cmd}
而不是替换。使事情变得更简单。使用:move
将时间缩短一点。e、 是的,它工作得很好。简单解释一下它是如何工作的,这对大家都有帮助。@RN如你所愿。在答案中添加。非常好的答案!特别是使用:g/{cmd}
而不是替换。使事情变得更简单。使用:move
将时间缩短一点。e、 g.:g/:/+m-