5

默认情况下,: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's 之类的关键字\%V)?

:s/\%V //g在这种情况下似乎不起作用;它会导致 0 个匹配项。)

预先感谢。

4

2 回答 2

9

您可以通过指定范围在视觉选择中进行替换。'<,'>作用于所选内容的第一行到最后一行,`<,`>作用于第一个字符到最后一个字符。所以在你的第一个例子中

a b |c d e| f g`, 

使用:`<,`>s/ //g会给你

a b cde f g

不幸的是,Evil 目前似乎不支持在 Visual Block 中进行替换,因此没有简单的方法来进行替换。

于 2014-11-25T20:14:09.677 回答
0

现在有一个包evil-visual-replace可以在块中完成替换:

https://github.com/troyp/evil-visual-replace

如果底层逻辑与 集成,那就太好了evil,这样:用可视块按下就可以了,但总比没有好。

于 2021-10-18T14:05:54.873 回答