Posso desativar a continuação dos comentários para a próxima linha no Vim?

65

No Vim, se eu estiver digitando um comentário em um arquivo de código e clicar Enternele, ele automaticamente tornará a nova linha um comentário.

Por exemplo, em um arquivo Ruby:

# I manually typed the pound at the start of this line and hit enter.
# This line formatted itself this way automatically.

Geralmente, é isso que eu quero, mas nem sempre. Como posso desativar temporariamente esse comportamento de comentar automático?

Nathan Long
fonte
Temporariamente, você deseja um comando que faça isso uma única vez ou define alguma opção que dure alguns comandos até que você o ligue novamente? Possível duplicada entre sites: stackoverflow.com/questions/4896003/…
Ciro Santilli (

Respostas:

86

Acho que você está procurando

:set formatoptions-=cro

De :help fo-table:

You can use the 'formatoptions' option  to influence how Vim formats text.
'formatoptions' is a string that can contain any of the letters below.  The
default setting is "tcq".  You can separate the option letters with commas for
readability.

letter  meaning when present in 'formatoptions'

t       Auto-wrap text using textwidth
c       Auto-wrap comments using textwidth, inserting the current comment
        leader automatically.
r       Automatically insert the current comment leader after hitting
        <Enter> in Insert mode.
o       Automatically insert the current comment leader after hitting 'o' or
        'O' in Normal mode.
...
Mike Seplowitz
fonte
13
Muito obrigado! Esse comportamento estava me incomodando - eu vim do unix vi para o Linux vim. Para Googlers: Para uso permanente , ver também stackoverflow.com/questions/6076592/... e digite esta linha em / etc / vimrc:autocmd BufNewFile,BufRead * setlocal formatoptions-=cro
bgStack15
Não ajudou; digitar /**<ESC>oainda adiciona uma estrela na próxima linha.
Qix
Não funciona z
felwithe 19/09
8

A configuração temporária da opção 'colar' pode fazer o que você deseja, mas também desativa muitos outros recursos do Vim:

Use :set pastepara ligá-lo e :set nopastedesligá-lo. Como alternativa, você pode usar :set paste!para alterná-lo.

Veja também:

:help 'paste'
:help 'pastetoggle'

(Esses comandos são digitados com aspas simples.)

Heptite
fonte
4
:set pastepara ativá-lo e :set nopastedesativá-lo #
User
2
Alternativamente, você pode usar :set paste!para alterná-la TRUE e FALSE
Felipe Alvarez
3

Entro novas linhas simples não formatadas com <CR>.

Quando quero continuar digitando a próxima linha no bloco comentado, apenas uso a Otecla como de costume.

Tente o seguinte:

nnoremap <silent> <cr> :set paste<cr>o<esc>:set nopaste<cr>
Sebastian Jylanki
fonte
11
Como assim <CR>? Uma chave em particular?
Peter Mortensen
11
CR significa retorno de carro. Nos computadores que usei, ele foi mapeado para a tecla Enter.
Sebastian Jylanki
0

Eu acabei com isso:

nnoremap <Leader>o o<Esc>^Da
nnoremap <Leader>O O<Esc>^Da

Ele adiciona uma nova linha, exclui tudo o que já foi inserido lá e deixa o cursor no modo de inserção na coluna recuada, sem mexer nas opções de formato.

Ruben
fonte
0

Esta resposta se aplica ao Debian e a alguns de seus derivados.

Em uma distribuição Debian, os padrões do Vim não são razoáveis. Eles estão localizados /usr/share/vim/vim80/defaults.vime aplicados após a /etc/vim/vimrcexecução de (!) . A única maneira de dizer ao Vim para não usar seus padrões é garantir que ~/.vimrcexista mesmo se estiver em branco. O Vim na inicialização tenta ler .vimrc, mas se o arquivo não for encontrado, ele aplica os padrões que trazem muitos comportamentos indesejáveis, como integração do mouse, peculiaridades de copiar e colar, quebra automática de comentários, etc.

No Debian você pode consertar TUDO isso simplesmente executando touch ~/.vimrc

oᴉɹǝɥɔ
fonte