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?


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.
...

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.)


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>

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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.