对于选定的行,使用vim将每个场景放在一个新行上

时间:2014-05-13 08:03:41

标签: vim

我的vim缓冲区包含多个句子的行。

如何让每个句子从一个新行开始?我不想在已经开始新行的句子之间插入额外的空行。

我可以替换每个。 by。\ n %s/\./\.\n/但是当句子后面有一个新行时,也会插入一个新行。

编辑: 如果该行以%开头,那么我想保留该行。

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

:%s/\([?.!]\)\s\(\w\)/\1\r\2/g

确保该行不以%开头的后视应防止在这些行上替换:

:%s/\(^%.*\)\@<!\([?.!]\)\s\(\w\)/\2\r\3/g

答案 1 :(得分:0)

试试这个:

:g/^[^%]/s/\../.^M/g

说明:

:g/^[^%]/处理不以%

开头的行

s/\../.^M/g取代每一个。接着是另一个带换行符的角色。

"one. two. three." becomes
one.
two.
three.

这不会在完全停止后保留角色。

要保留它,请使用:

:g/^[^%]/s/\../&^M/g

"one. two. three." becomes
one. [trailing space]
two. [trailing space] 
three.

要保留它,但在接下来的行中,请使用:

:g/^[^%]/s/\.\(.\)/.^M\1/g

"one. two. three." becomes
one.
 two.
 three.

在所有情况下,要输入^M,请键入ctrl+V,然后return