我正在寻找一种方法来替换除最后一个以外的所有点。
例子:
Blah - whatever - foo.bar.baz.avi
应该成为
Blah - whatever - foo bar bar.avi
由于我将在文件中有不止一行,并且每一行中的点数各不相同,我正在寻找一个通用的解决方案,而不是像“替换第一个 X 匹配项”这样的东西,其中 X 是一个常数。
我正在寻找一种方法来替换除最后一个以外的所有点。
例子:
Blah - whatever - foo.bar.baz.avi
应该成为
Blah - whatever - foo bar bar.avi
由于我将在文件中有不止一行,并且每一行中的点数各不相同,我正在寻找一个通用的解决方案,而不是像“替换第一个 X 匹配项”这样的东西,其中 X 是一个常数。
作为第一个答案的变体,您可能更喜欢这种语法:
%s/\.\ze.*\./ /g
它让您断言在搜索运算符之后有一个句号。
另一种可能对学习有用的方法(替换内部视觉选择)是:使用,输入
where 。
:g/^/normal $F.hv0:s/\%V\./ /g
^M
^M
CTRL-VEnter
这意味着:对于每一行 ( g/^/
) 类型$F.
(转到最后一个点),从字符向左视觉选择直到行首 (hv0
),然后:s/\./ /g^M
仅在视觉选择 ( ) 内替换点 ( \%V
)。