我的vim缓冲区包含多个句子的行。
如何让每个句子从一个新行开始?我不想在已经开始新行的句子之间插入额外的空行。
我可以替换每个。 by。\ n %s/\./\.\n/
但是当句子后面有一个新行时,也会插入一个新行。
编辑: 如果该行以%开头,那么我想保留该行。
答案 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