如何搜索并删除字符然后插入

如何搜索并删除字符然后插入

我的字符串是:

P12106003;test_01_01

我正在使用命令

:g/test_.._../norm 10Xi<<Esc>A>

结果必须类似于

<test_01_01>

不工作。

答案1

X向后删除。 while:norm会在每个匹配行的开头进入正常模式。所以你会x想要

g/test_.._../norm 10xi<^[A>

(其中^[是用 输 入的真实 ESC 字符Ctrl+VEsc)。

或者你可以这样做:

g/test_.._../norm dni<^[A>

在这里,使用起来可能更简单:s

:%s/\v.*(test_.._..)/<\1>/

或者删除每次出现之前的 10 个字符test_.._..(并换行<...>):

:%s/\v.{10}(test_.._..)/<\1>/g

或者任何匹配的东西P<digits>;

:%s/\vP\d+;(test_.._..)/<\1>/g

相关内容