Faça o Vim continuar apenas alguns tipos de comentários na próxima linha

0

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.

    
por interfect 14.08.2018 / 20:14

0 respostas

Tags