O Vim insere automaticamente um comentário quando inicio uma nova linha a partir de uma linha comentada, porque defini formatoptions=tcroql
. Por exemplo (o cursor é *
):
// this is a comment*
e depois de pressionar <Enter>
(modo de inserção) ou o
(modo normal), fico com:
// this is a comment
// *
Esse recurso é muito útil ao escrever comentários longos com várias linhas, mas geralmente quero apenas um comentário com uma única linha. Agora, se eu quiser terminar a série de comentários, tenho várias opções:
- acertar
<Esc>S
- bateu
<BS>
três vezes
Ambos oferecem três pressionamentos de tecla, somados a <Enter>
isso, significam quatro pressionamentos de tecla para uma nova linha, o que eu acho demais. Idealmente, gostaria de apertar <Enter>
uma segunda vez para ficar com:
// this is a comment
*
É importante que a solução também funcione com diferentes níveis de indentação, ou seja,
int main(void) {
// this is a comment*
}
acertar <Enter>
int main(void) {
// this is a comment
// *
}
acertar <Enter>
int main(void) {
// this is a comment
*
}
Acho que vi esse recurso em algum editor de texto há alguns anos, mas não me lembro qual era. Alguém está ciente de uma solução que fará isso por mim no Vim? Ponteiros na direção certa sobre como rolar minha própria solução também são muito bem-vindos.
fonte
Respostas:
Tente o seguinte:
fonte
:h 'comment'
e:h format-comment'
.#
ruby e o"
vimscript, além do clássico//
. Realmente não faz sentido fazer nada pelos*
comentários de múltiplas linhas no estilo C, porque deve terminar com o*/
mesmo.<CR><CR>
poderia ser usado para terminar o comentário de várias linhas ...Estendi a resposta do @ romainl para trabalhar com idiomas arbitrários, gerando o regex do Vim
&commentstring
:No entanto, não consigo remapear
<CR>
, isso simplesmente não funciona. Por enquanto, uso<CR><CR>
até que esse problema seja resolvido.fonte
<Esc>S
?<C-u>
faz o mesmo sem sair do modo de inserção. Enfim, eu tinha uma função personalizada que fazia várias coisas<CR>
e a renomei paraSmartEnter()
ontem, depois de postar minha resposta ;-). Também não tenho certeza de que&commentstring
é a escolha certa, pois geralmente contém apenas um formulário e pode ser "em sentido de linha" ou "em sentido de bloco" (/*%s*/
em C,//%s
em Javascript etc.).Remova r das formações. É isso que essa opção faz. Desativá-lo significa que você nunca conseguirá fazer o vim fazer isso por você, o que significa que você precisará adicionar os principais marcadores de comentários quando realmente quiser, mas essa é a desvantagem.
fonte
formatoptions