如果我有几个代码部分,如下所示:
// XXX DEBUG
printf("example code");
int y = 6;
// XXX END DEBUG
我想在 vim 中运行一个命令来注释掉XXX DEBUG
和之间的位XXX END DEBUG
:
// XXX DEBUG
// printf("example code");
// int y = 6;
// XXX END DEBUG
我尝试过使用:g
切换的分隔符
:g#^.*// XXX DEBUG#.,#^.*// XXX END DEBUG#normal I//
但这只会给我带来错误消息E492: Not an editor command: .,#^.*// XXX END DEBUG#normal I//
您不能在范围内使用替代分隔符。一个很好的理由是很难知道你是否有意
/foo/
或?foo?
何时这样做<whatever>foo<whatever>
。:help :g
在or中使用替代分隔符:help :s
是可能的,因为在该上下文中不可能出现这种混淆。因此,您可以将 s 保留
#
为“:global
”部分,但您需要将您的//
范围转义为:normal
:或者我们
\v
改变模式的“魔力”:现在,这有效了:
嗯……有点。
按原样,由于缺少偏移量,您不仅要在匹配行之间
//
添加行,还要添加到匹配行本身:在下面的固定版本中,
:normal
行开始,因此您可以简单地使用 or ,.+
+
/re/-
.它应该是这样的: