Perché non posso impedire a vim di eseguire il wrapping del mio codice?


115

Non riesco a impedire a vim di avvolgere il mio codice Python. Se entro :set nowrapcome un campione, ma avvolge comunque.

Posso premere Jper unire le righe di codice divise, quindi sembra che venga inserito un vero ritorno a capo. Semplicemente non capisco perché o come fermarlo.


15
:set nowrapimpedisce solo di avvolgere la visualizzazione delle righe, non di inserire interruzioni di riga.
rampion

Risposte:


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 ti riferisci al wrapping automatico di linee lunghe per inviarle a quella successiva, prova

:set textwidth=0 
:set wrapmargin=0

12
Alcuni plugin sembrano sovrascrivere questa impostazione.
Yzmir Ramirez

Le opzioni twe wpnon hanno funzionato per me, quindi ho dovuto andare su formatoptions github.com/ain/.vim/blob/…
Ain Tohvri

2
Se tw e wp ancora non risolvono il problema, dai un'occhiata a questo post su SU che mi ha aiutato a risolvere il mio problema: superuser.com/questions/250112/…
Alien_SM

3
Rimuovere filetype plugin ondal mio l'ha .vimrcfatto per me.

1
Con questa risposta, non è possibile utilizzare gqper riallineare manualmente il paragrafo alla larghezza del testo. @ Engineero's dovrebbe essere quello corretto.
Dylanthepiguy

87

Nessuna delle altre risposte ha funzionato per me (IDK perché).

:set wrap! Ha fatto il trucco per me (utilizzando GVim per Windows).


8
Questo risolve un problema leggermente diverso. wrapfornisce l'aspetto del ritorno a capo automatico, ma in realtà non spezza il testo su nuove righe. Probabilmente lo avevi wrapabilitato, quindi :set wrap!disattivalo. È possibile verificare con :set wrap?quale eco il valore corrente (cioè wrapo nowrap).
shadowtalker

1
Questa soluzione funziona per me su Mac OsX. Vim versione 7.4
Shnkc

Questo ha funzionato per me, ho cambiato textwidthe wrapmarginprima, ma questo in realtà ha costretto vim ad aggiornare e rieseguire il rendering senza alcuna linea di ritorno.
Kredns

Ding din ding! Lavora a neovim
Gjaa il

Che momento magico quando scopri che il comando di cui hai veramente bisogno è così espressivo e semplice. Grazie devs
Capitan Empanada

57

set formatoptions-=tdovrebbe fare il trucco. set formatoptions+=triattiverà il wrapping automatico.

Per ulteriori informazioni su cosa puoi fare con formatoptions, consulta i documenti .


2
Grazie! La tua soluzione è l'unica che ha funzionato per me. A volte vim non inserisce più le nuove righe quando entro in modalità di inserimento.
Geremia

2
Sì. Questa è la vera soluzione.
Russ Bateman,

16

Per impedire a vim di avvolgere righe lunghe, utilizzo queste due righe nel mio .vimrc:

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

12

Per disabilitare il ritorno a capo automatico, puoi inserire :set wrap!o aggiungere questo comando al tuo file ~/.vimrc.


2
Ciò non influisce sull'inserimento automatico di interruzioni di riga reali, di cui tratta questa domanda.
Arthur Tacca

9

Forse è la larghezza del testo impostata, che interrompe automaticamente le righe quando raggiunge una certa lunghezza Prova

:set tw=0

Se fallisce, gioca con es

:set wrap linebreak textwidth=0 

e

:set virtualedit=insert

2
wrap e linebreak non inseriscono l'effettiva fine di riga nel buffer, quindi non sembra essere il suo problema.
A. Levy


0

Apri vimrc_example.vim (Sì, questo è il file in Vim74) e imposta textwidth = 0.


0

Su MacBook Pro ho superato la linea .vimrc

autocmd FileType text setlocal textwidth=78

così è diventato

"  autocmd FileType text setlocal textwidth=78

.

(Ho installato una versione di vim tramite homebrew.) Ciò ha aiutato tutti i file .txt.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.