Por que não consigo impedir o vim de embrulhar meu código?


115

Não consigo impedir o vim de embrulhar meu código Python. Se eu entrar :set nowrapcomo um campeão, mas ainda assim envolve.

Posso apertar Jpara unir as linhas de divisão do código, então parece que um retorno de carro real está sendo inserido. Só não entendo por que ou como pará-lo.


15
:set nowrapapenas o impede de quebrar a exibição de linhas, não de inserir quebras de linha.
aumento de

Respostas:


115
'textwidth' 'tw'        number  (default 0)
                        local to buffer
                        {not in Vi}
        Maximum width of text that is being inserted.  A longer line will be
        broken after white space to get this width.  A zero value disables
        this.  'textwidth' is set to 0 when the 'paste' option is set.  When
        'textwidth' is zero, 'wrapmargin' may be used.  See also
        'formatoptions' and |ins-textwidth|.
        When 'formatexpr' is set it will be used to break the line.
        NOTE: This option is set to 0 when 'compatible' is set.


'wrapmargin' 'wm'       number  (default 0) 
                        local to buffer
        Number of characters from the right window border where wrapping
        starts.  When typing text beyond this limit, an <EOL> will be inserted
        and inserting continues on the next line.
        Options that add a margin, such as 'number' and 'foldcolumn', cause
        the text width to be further reduced.  This is Vi compatible.
        When 'textwidth' is non-zero, this option is not used. 
        See also 'formatoptions' and |ins-textwidth|.  {Vi: works differently
        and less usefully}

Se você se refere à quebra automática de linhas longas, enviando-as para a próxima, tente

:set textwidth=0 
:set wrapmargin=0

12
Alguns plug-ins parecem substituir essa configuração.
Yzmir Ramirez

As opções twe wprealmente não funcionaram para mim, então eu tive que ir para formatoptions github.com/ain/.vim/blob/…
Ain Tohvri

2
Se tw e wp ainda não resolverem o problema, dê uma olhada neste post no SU que me ajudou a resolver meu problema: superuser.com/questions/250112/…
Alien_SM

3
Remover filetype plugin ondo meu .vimrcfez isso por mim.

1
Com esta resposta, você não pode usar gqpara realinhar o parágrafo manualmente para a largura do texto. O @ Engineero deve ser o correto.
Dylanthepiguy de

86

Nenhuma das outras respostas funcionou para mim (IDK por quê).

:set wrap! Fez o truque para mim (usando GVim para Windows).


8
Isso resolve um problema ligeiramente diferente. wrapfornece a aparência de quebra de linha, mas não realmente quebrar texto em novas linhas. Você provavelmente tinha wrapativado, então o :set wrap!desativou. Você pode verificar com :set wrap?qual ecoará o valor atual ( wrapou seja, ou nowrap).
shadowtalker

1
Esta solução funciona para mim no Mac OsX. Vim versão 7.4
Shnkc

Isso funcionou para mim, eu mudei textwidthe wrapmarginprimeiro, mas isso realmente forçou o vim a atualizar e renderizar novamente sem quaisquer linhas quebradas.
Kredns

Ding din ding! Trabalha em neovim
Gjaa

Que momento mágico quando você descobre que o comando que você realmente precisa é tão expressivo e simples. Obrigado devs
Capitan Empanada

57

set formatoptions-=t deve fazer o truque. set formatoptions+=tativará a quebra automática novamente.

Para obter mais informações sobre o que você pode fazer formatoptions, consulte os documentos .


2
Obrigado! Sua solução é a única que funcionou para mim. O vim não insere mais novas linhas às vezes quando entro no modo de inserção.
Geremia de

2
Sim. Esta é a solução real.
Russ Bateman

16

Para evitar que o vim empacote linhas longas, eu uso estas duas linhas no meu .vimrc:

set nowrap           " do not automatically wrap on load
set formatoptions-=t " do not automatically wrap text when typing

12

Para desativar a quebra de linha, você pode inserir :set wrap!ou anexar este comando ao seu ~/.vimrc.


2
Isso não afeta a inserção automática de quebras de linha reais, de que trata esta questão.
Arthur Tacca

9

Talvez seja a largura do texto que está definida, que quebra automaticamente as linhas quando atinge um determinado comprimento

:set tw=0

Se isso falhar, jogue com, por exemplo

:set wrap linebreak textwidth=0 

e

:set virtualedit=insert

2
quebra de linha e quebra de linha não inserem fim de linha real no buffer, então esse não parece ser o problema dele.
A. Levy


0

Abra vimrc_example.vim (Sim, este é o arquivo em Vim74) e defina textwidth = 0.


0

No macbook pro, fiz comentários na linha .vimrc

autocmd FileType text setlocal textwidth=78

então se tornou

"  autocmd FileType text setlocal textwidth=78

.

(Eu instalei uma versão do vim via homebrew.) Isso ajudou para todos os arquivos .txt.

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.