没有理由做以下事情(我这样做只是因为我没有考虑过),但它可能代表视觉选择中进行替换的错误。
在视觉上选择(v
)少于一行的文本量,然后开始替换(:s
),并添加视觉选择原子(\%V
),选择catch-all正则表达式(.*
),替换字符串将类似于:
:'<,'>s/\%V.*/ /
(这里,用一个空格替换所有东西)。我所期望的是视觉选择中的所有内容都被一个空间所取代,但实际上,整个线路(包括视觉选择之外的所有线路)都会被替换。所有其他替换都限制自己选择(例如\a*
或.
)
我知道Vim正则表达式原子有一些细微之处,也有视觉选择的描述符('<
vs `<
),所以我不确定这是否是预期的。如果是预期的,请告诉我。如果没有,那肯定不是什么大问题,因为有很多更好的方法可以做同样的事情,但我仍然会继续发布到vim_dev。
答案 0 :(得分:3)
来自:help%V
要确保整个图案位于可视区域内,请将其置于图案的开头和结尾
'<,'>s/\%V.*\%V./ /
应该有效。注意额外的点,因为vim因某种原因排除了选择的最后一个字符。