默认情况下,:s/[search-term]/[replace-term]
适用于整行而不是视觉选择。例如,如果您在c和e之间选择,例如:
a b |c d e| f g
并执行
:s/ //g
,结果是:abcdefg
而不是
a b cde f g
同样,在可视块选择中:
a b |c d e| f g
0 1 |2 3 4| 5 6
:s/ //g
产量abcdefg
0123456
而不是
a b cde f g
0 1 234 5 6
有没有人有办法使邪恶模式的
:s/
仅在所选内容上起作用(最好是默认情况下,或者使用vim的\%V
这样的关键字)?(在这种情况下,
:s/\%V //g
似乎不起作用;它导致0个匹配项。)预先感谢。
最佳答案
您可以通过指定范围在视觉选择中进行替换。 '<,'>
在所选内容的第一行到最后一行,而`<,`>
在第一个字符到最后一个字符起作用。所以在你的第一个例子中
a b |c d e| f g`,
使用
:`<,`>s/ //g
会给你a b cde f g
不幸的是,Evil目前似乎不支持在Visual Block中进行替换,因此没有简单的方法来进行替换。
关于emacs - Emacs, evil-mode :仅在视觉选择/视觉块中替换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27125661/