默认情况下,: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/

10-13 05:02