Emacs,Evil-Mode:仅在视觉选择/视觉块中替换?

spa*_*sue 4 emacs replace selection evil-mode

默认情况下,它:s/[search-term]/[replace-term]适用于整行而不是视觉选择.例如,如果您在c和e之间进行选择,则:

a b |c d e| f g
Run Code Online (Sandbox Code Playgroud)

而且:s/ //g,结果是:

abcdefg
Run Code Online (Sandbox Code Playgroud)

而不是

a b cde f g
Run Code Online (Sandbox Code Playgroud)

同样,在视觉块选择中:

a b |c d e| f g
0 1 |2 3 4| 5 6
Run Code Online (Sandbox Code Playgroud)

:s/ //g 产量

abcdefg
0123456
Run Code Online (Sandbox Code Playgroud)

而不是

a b cde f g
0 1 234 5 6
Run Code Online (Sandbox Code Playgroud)

有没有人有办法让邪恶模式的:s/工作只在选择上(最好是默认情况下,或者像vim这样的关键字\%V)?

(:s/\%V //g在这种情况下似乎不起作用;它会导致0场比赛.)

先谢谢.

res*_*man 6

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

a b |c d e| f g`, 
Run Code Online (Sandbox Code Playgroud)

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

a b cde f g
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢你!经过一些后续工作,我还发现 `(setqviles-ex-visual-char-range t)` 默认情况下启用它。不过,视觉块模式令人失望。 (2认同)