SE eu tiver várias seções de código semelhantes a:
// XXX DEBUG
printf("example code");
int y = 6;
// XXX END DEBUG
Eu gostaria, no vim, de executar um comando para comentar os bits entre XXX DEBUG
e XXX END DEBUG
:
// XXX DEBUG
// printf("example code");
// int y = 6;
// XXX END DEBUG
Eu tentei usar :g
com o delimitador trocado
:g#^.*// XXX DEBUG#.,#^.*// XXX END DEBUG#normal I//
Mas isso só me dá a mensagem de erroE492: Not an editor command: .,#^.*// XXX END DEBUG#normal I//
Você não pode usar um separador alternativo em um intervalo. Uma boa razão é que é difícil saber se você está falando sério
/foo/
ou?foo?
quando está fazendo isso<whatever>foo<whatever>
. Usar um separador alternativo em:help :g
ou:help :s
é possível porque tal confusão não é possível nesse contexto.Portanto, você pode manter seu
#
s para a:global
parte " ", mas precisa escapar//
do intervalo para:normal
:ou nós
\v
para alterar a "magia" do padrão:Agora, isso funciona:
Hum... mais ou menos.
No estado em que se encontra, você está acrescentando
//
as linhas entre as linhas correspondentes, mas também as próprias linhas correspondentes devido à falta de deslocamentos:Na versão fixa abaixo,
:normal
deve começar na linha abaixo da linha correspondente, então você usaria.+
ou simplesmente+
,/re/-
.É assim que deveria ser: