对于选定的行,使用vim将每个场景放在新行上
我的vim缓冲区包含多个句子的行 我怎样才能让每个句子都换一行?我不想在已经在新行开始的句子之间插入额外的空行 每个我都可以换。通过。\n对于选定的行,使用vim将每个场景放在新行上,vim,Vim,我的vim缓冲区包含多个句子的行 我怎样才能让每个句子都换一行?我不想在已经在新行开始的句子之间插入额外的空行 每个我都可以换。通过。\n%s/\./\.\n/但在句子后面已经有新行时也插入新行 编辑: 如果该行以%开头,则我希望该行保持原样。您可以尝试以下操作: :%s/\([?.!]\)\s\(\w\)/\1\r\2/g 查找以确保该行不以%开头,应防止在这些行上进行替换: :%s/\(^%.*\)\@<!\([?.!]\)\s\(\w\)/\2\r\3/g :%s/\(^%.*\
%s/\./\.\n/
但在句子后面已经有新行时也插入新行
编辑:
如果该行以%开头,则我希望该行保持原样。您可以尝试以下操作:
:%s/\([?.!]\)\s\(\w\)/\1\r\2/g
查找以确保该行不以%
开头,应防止在这些行上进行替换:
:%s/\(^%.*\)\@<!\([?.!]\)\s\(\w\)/\2\r\3/g
:%s/\(^%.*\)\@试试这个:
:g/^[^%]/s/\../.^M/g
"one. two. three." becomes
one. [trailing space]
two. [trailing space]
three.
说明:
: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
似乎是重复的@angezanetti谢谢,问题确实非常相似。只是我不想在下一句已经从新行开始时插入新行。这一部分被省略了,因为在vim中很难精确地完成。这取决于你的句子有多“复杂”。见这里的讨论:谢谢。你能补充一点解释吗?它取代了所有句子结尾字符(?!)和单词字符之间的空格字符。捕获者记住句子的结尾和单词的第一个字母。替换用换行符替换空格。非常感谢您的解释。这是学习构建此类替换的良好开端。谢谢你的更新。你能解释一下更新吗?