我正在使用vim中的一个简单文本文件,我希望在完全停止(点/句点)后以2个空格结束每个句子。但是,我不希望那些在完全停止后已经有2个空格的句子进一步增加空格。测试文本可以是:
This sentence has only 1 space after it. This one has two. This line has again 1 space only. This is last line.
我试过了:
%s/\. /\. /g
但是这会将所有空格增加一个。我也尝试过,但它不起作用:
%s/\. \\([^ ]\\)/. \\1/g
我怎样才能在vim中实现这一目标?
答案 0 :(得分:6)
替换所有句点,后跟空格,后跟2个空格
%s/\. \+/. /g
答案 1 :(得分:2)
:%s/\. \([^ ]\)/. \1/g
结果:
This sentence has only 1 space after it. This one has two. This line has again 1 space only. This is last line.~
答案 2 :(得分:1)
您可以使用
%s/\. \( \)\@!/. /g
\. \( \)\@!
模式匹配.
和未跟随其他空格的空格。
(...)@!
是Vim中的否定前瞻构造。见Lookbehind / Lookahead Regex in Vim。在其他常见的正则表达式中,它被写为(?!pattern)
。您可以在this answer of mine中详细了解负面前瞻的工作方式。
要匹配任何空格,请在模式中用\s
替换文字空间。
答案 3 :(得分:0)
在句点之后添加一个额外的空格,后跟一个空格
:%s/\. \zs\ze[^ ]/ /g