Mi piace che le linee lunghe siano visualizzate su più di una linea terminale; Non mi piace che vim inserisca nuove righe nel mio testo reale. Quale parte di .vimrc dovrei cambiare?
Mi piace che le linee lunghe siano visualizzate su più di una linea terminale; Non mi piace che vim inserisca nuove righe nel mio testo reale. Quale parte di .vimrc dovrei cambiare?
Risposte:
Uso
:set wrap
Per avvolgere visivamente le linee, ovvero la riga è ancora una riga di testo, ma Vim la visualizza su più righe.
Uso
:set nowrap
Per visualizzare le linee lunghe come una sola linea (cioè devi scorrere in orizzontale per vedere l'intera linea).
Mi piace che le linee lunghe siano visualizzate su più di una linea terminale
Questo tipo di avvolgimento di linee visivo / virtuale è abilitato con l' wrap
opzione finestra:
set wrap
Non mi piace che vim inserisca nuove righe nel mio testo reale.
Per disattivare il ritorno a capo fisico, deselezionare entrambe le opzioni textwidth
e wrapmargin
buffer:
set textwidth=0 wrapmargin=0
set textwidth=0 wrapmargin=0
funziona ma se lo inserisco .vimrc
, non ha alcun effetto, ad esempio, per i file di testo semplice. Come faccio a scoprire ed eliminare la sovrascrittura?
:verbose set textwidth? wrapmargin?
. Questo ti dirà i loro valori attuali e anche dove sono stati impostati. È possibile che tu abbia un plugin che li sovrascrive. In tal caso, è possibile disinstallare quel plug-in o provare a sovrascrivere le impostazioni del plug-in in un secondo momento nel proprio runtimepath (ad esempio:) ~/.vim/after
o con il proprio autocommand. L'approccio corretto dipenderà da dove / come viene ripristinato.
set wrap
ed set linebreak
è quello che ha fatto per me.
Non sono sicuro di aver capito completamente, ma potresti cercare l'impostazione di configurazione "formatoptions". Prova qualcosa del genere :set formatoptions-=t
. L' t
opzione inserirà le interruzioni di riga per avvolgere il testo alla larghezza impostata da textwidth
. Puoi anche inserire questo comando nel tuo .vimrc
, basta rimuovere i due punti ( :
).
tw
.
Usa :set nowrap
.. funziona come un fascino!
:set tw=0
VIM non inserirà automaticamente le interruzioni di riga, ma manterrà il ritorno a capo.
Potresti trovare set lbr
utile; con set wrap
su questo avvolgerà ma tagliando solo la linea su uno spazio bianco e non nel mezzo di una parola.
per esempio
without lbr the li
ne can be split on
a word
e
with lbr on the
line will be
split on
whitespace only
set nolinebreak
invece diset lbr
set formatoptions-=t
Mantiene la larghezza del testo visiva ma non aggiunge una nuova riga in modalità inserimento.
È strano che un'impostazione così semplice richiederebbe questa quantità di "hocus-pocus" per funzionare.
Per rispondere alla tua domanda ora, per me sembrava funzionare con la combinazione di quanto segue:
:set wrap linebreak nolist
(questo sembra impedire che le linee esistenti si spezzino, basta avvolgerle.)
E
set formatoptions=l
(questo impedisce che le linee nuove / modificate si rompano, mentre + = non lo fa per me poiché altre impostazioni / plugin sembrano trovare spazio e aggiungere le proprie opzioni che sovrascrivono le mie.)
Se, come me, stai eseguendo gVim su Windows, il tuo file .vimrc potrebbe essere di provenienza da un altro file Vimscript 'esempio' che imposta automaticamente textwidth
(nel mio caso 78
) per i file di testo.
La mia risposta a una domanda simile a questa - Come fermare gVim a capo del testo nella colonna 80 - sul sito Vi e Vim Stack Exchange :
Nel mio caso, il commento di Vitor mi ha suggerito di eseguire quanto segue:
:verbose set tw?
In questo modo mi ha dato il seguente risultato:
textwidth=78 Last set from C:\Program Files (x86)\Vim\vim74\vimrc_example.vim
In vimrc_example.vim , ho trovato le righe pertinenti:
" Only do this part when compiled with support for autocommands. if has("autocmd") ... " For all text files set 'textwidth' to 78 characters. autocmd FileType text setlocal textwidth=78 ...
E ho scoperto che il mio .vimrc sta acquistando quel file:
source $VIMRUNTIME/vimrc_example.vim
Nel mio caso, non voglio
textwidth
essere impostato per nessun file, quindi ho appena commentato la riga pertinente in vimrc_example.vim .
autocmd FileType text setlocal textwidth=0
il file vimrc e questo ha risolto il problema quando altre soluzioni proposte non lo hanno fatto.
È corretto che set nowrap ti permetterà di incollare in una lunga riga senza che vi / vim aggiunga nuove righe, ma poi la linea non viene visivamente chiusa per una facile lettura. È invece solo una lunga fila che devi scorrere.
Per fare in modo che la riga si sovrapponga visivamente ma non siano inseriti caratteri di nuova riga, impostare wrap (che è probabilmente predefinito quindi non è necessario impostarlo) e impostare textwidth = 0 .
Su alcuni sistemi, l'impostazione di textwidth = 0 è predefinita. Se non lo trovi, aggiungi set textwidth = 0 al tuo file .exrc in modo che diventi il tuo utente predefinito per tutte le sessioni vi / vim.
:set nowrap
è l'opposto di quello che vuoi :(.