Eu gosto /* ... */
(comentários), então aqui está o meu truque para você. Você pode adaptá-lo para uso em diferentes casos, é claro.
Comentar com / * ... * /
Selecione o texto (vá para o início, inicie o bloco visual, pule com }
):
<c-V>}
Digite o comando a ser aplicado na seleção
:norm i/* <c-v><esc>$a */
O comando será semelhante a: :'<,'>norm i /* ^[$a */
Veja (i *) para detalhes.
Remova o comentário de / * ... * /
Selecione o texto (como antes ou da maneira que desejar):
<c-V>}
Digite o comando a ser aplicado na seleção
:norm :s-\s*/\*\s*-<c-v><enter>$bbld$
O comando será semelhante a: :'<,'>norm :s-\s*/\*\s*-^M$bbld$
Veja (ii *) para detalhes.
Resultado
Efeito é comentários linha por linha:
Comment block
Comment block
Comment block
Torna-se (e vice-versa):
/* Comment block */
/* Comment block */
/* Comment block */
É melhor salvá-lo como alguns map
ou @reg
no seu .vimrc
, porque é muito para digitar. Se você preferir um bloco único /*
e */
para todo, use:
Comente com um único / * * / todo o bloco
Salve-o em um registro gravando com, digamos qc
, então, no início de um parágrafo, para comentar:
v}di/* */<esc>hhhp
e não se esqueça q
novamente, para terminar o registro.
Veja (iii *) para detalhes.
Descomente um único / * * / de um bloco
Salve-o no registro, digamos @u
,. Coloque o cursor em qualquer lugar dentro do bloco e:
?/\*<enter>xx/\*/<enter>xx
Salve o registro finalizando q
comando.
Veja (iv *) para detalhes.
Resultado
Effect é um único comentário para várias linhas:
Comment block
Comment block
Comment block
Torna-se (e vice-versa):
/* Comment block
Comment block
Comment block */
Explicações
(i *) Funciona usando o norm
qual aplica o mesmo comando repetidamente em todas as linhas selecionadas. O comando simplesmente insere a /*
, localiza o final dessa linha e termina inserindo um*/
:norm i/* <c-v><esc>$a */
(ii *) Também é usado norm
para repetir a pesquisa / substituição em todas as linhas. Procure spaces /* spaces
e substitua por nada. Depois disso, encontra o final da linha, retorne duas palavras, uma letra à direita, exclua até o final.
:norm :s-\s*/\*\s*-<c-v><enter>$bbld$
(iii *) Seleciona o parágrafo v}
, exclua-o, insira um comentário para abrir e fechar, vá para o meio e cole o bloco excluído.
v}di/* */<esc>hhhp
(iv *) Em qualquer lugar do meio, encontra a para trás a /*
e apaga; localiza a frente a */
, exclui-a.
?/\*<enter>xx/\*/<enter>xx