在句点(点)之后将1个空格增加到2但在vim

时间:2017-04-26 12:11:03

标签: regex vim

我正在使用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中实现这一目标?

4 个答案:

答案 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