Eu quero que o Vim continue /*...*/
comentários na próxima linha inserindo automaticamente o líder de comentários, mas finalizando //
comentários depois de uma única linha.
O wiki do Vim recomenda:
autocmd FileType c,cpp setlocal comments-=:// comments+=f://
Mas isso faz com que a chave de entrada em uma linha com um comentário //
indente a próxima linha até onde estava o texto do comentário na linha anterior, o que é incorreto. Isso ocorre devido ao comportamento da opção f
para comments
, conforme documentado na ajuda do Vim:
f Only the first line has the comment string. Do not repeat comment on
the next line, but preserve indentation (e.g., a bullet-list).
O que eu quero é o comportamento de f
, mas não preservando o recuo no estilo de uma lista com marcadores. Quando eu desço para a próxima linha de um linha única //
comentário, quero estar no mesmo nível do recuo real do código. Isso é possível apenas ajustando a configuração? Preciso substituir minha ligação de chave de inserção por uma função sofisticada para desfazer o recuo?
Uma não solução é remover //
de comments
alltogether. Isso não funcionará porque impede que //
comentários sejam reempacotados corretamente com gq
, porque gq
confia em comments
para saber quais líderes de comentários filtrar o texto que está envolvendo.
Outra coisa que não posso fazer é setlocal formatoptions-=r
, porque isso desativa a inserção de líderes de comentários, mesmo para /*...*/
comentários.
Isso é semelhante a Vim: comentário automático na nova linha , procurando uma maneira rápida de sair do modo de inserção //
, exceto que eu não quero ter o //
inserido em tudo.