在视觉选择中替换的小错误?

时间:2015-02-10 20:03:23

标签: vim

没有理由做以下事情(我这样做只是因为我没有考虑过),但它可能代表视觉选择中进行替换的错误。

在视觉上选择(v)少于一行的文本量,然后开始替换(:s),并添加视觉选择原子(\%V),选择catch-all正则表达式(.*),替换字符串将类似于:

:'<,'>s/\%V.*/ /

(这里,用一个空格替换所有东西)。我所期望的是视觉选择中的所有内容都被一个空间所取代,但实际上,整个线路(包括视觉选择之外的所有线路)都会被替换。所有其他替换都限制自己选择(例如\a*.

我知道Vim正则表达式原子有一些细微之处,也有视觉选择的描述符('< vs `<),所以我不确定这是否是预期的。如果是预期的,请告诉我。如果没有,那肯定不是什么大问题,因为有很多更好的方法可以做同样的事情,但我仍然会继续发布到vim_dev。

1 个答案:

答案 0 :(得分:3)

来自:help%V

  

要确保整个图案位于可视区域内,请将其置于图案的开头和结尾

'<,'>s/\%V.*\%V./ /

应该有效。注意额外的点,因为vim因某种原因排除了选择的最后一个字符。