Vim:替换所有点,但最后一行替换

Thi*_*ter 7 vim

我正在寻找一种方法来替换除最后一行之外的所有点.

例:

Blah - whatever - foo.bar.baz.avi 应该成为
Blah - whatever - foo bar bar.avi

由于我在文件中有多行,并且每行中点的数量不同,我正在寻找通用的解决方案,而不是像"替换第一个X匹配"那样,X是常量.

Fel*_*ing 11

这似乎可以解决问题:

%s/\.\(.*\.\)\@=/ /g
Run Code Online (Sandbox Code Playgroud)

\@=是一个先行者.如果有任何后续句号,它只匹配一个句号.

:help zero-width.


小智 6

作为第一个答案的变体,您可能更喜欢这种语法:

%s/\.\ze.*\./ /g
Run Code Online (Sandbox Code Playgroud)

它让你在搜索运算符后面有一个跟随完全停止的断言.