2011-02-27 24 views
13

Sembra una domanda stupida, ma non riesco a trovare una risposta su Internet (o nell'aiuto di VIM). Sto usando VIM 7.2 su Mac OS X. Tutto quello che voglio fare è avvolgere le mie battute a 72 caratteri, ma facendoL'ampiezza del testo VIM non ha effetto

:set textwidth=72 

non ha alcun effetto. L'ampiezza del testo viene impostata correttamente (posso vedere che quando ho appena interrogato ": set textwidth"), ma né le linee esistenti né le nuove righe che digito dopo aver impostato l'ampiezza del testo vengono avvolte. Se inizio una nuova riga, ancora non si avvolge. Apri e chiudi il file, senza modifiche. Ho anche provato: imposta wrapmargin = 72 (con textwidth = 0), senza alcun effetto.

Cosa mi manca qui?

risposta

8

Cosa

:set formatexpr? 
:set indentexpr? 
:set cindent? 
:set filetype? 
:set paste? 
:filetype 

stampa.

Almeno uno di questi (e penso tutti) sostituirà l'impostazione per textwidth.

Ad esempio, se si modifica un file di origine C, le regole di rientro del codice sostituiscono textwidth.

+2

provare anche ': pasta di impostare'?. Anche quello può interferire. – patrickvacek

+0

Per me era ': set paste' che ho mappato a una sequenza leader. Grazie @patrickvacek – OregonTrail

5

Vim non farà nulla se non richiesto. textwidth avrà un effetto per le righe attualmente modificate se si dispone di (solo per i commenti), c (solo per i commenti) o entrambi in formatoptions (se a non è presente lì, quindi verrà eseguito automaticamente solo quando si raggiunge il margine impostato da textwidth) o se si utilizza gq per riformattare il testo. Se non sbaglio, è possibile impostare tale formatexpr o formatprg in modo che textwidth venga ignorato.

9

Provare a gggqG per applicare la nuova larghezza del testo all'intero buffer.

  • gg significa: andare all'inizio di tampone
  • gq significa: riformattare il testo incluso nel moto
  • G significa: andare alla fine del buffer

(Sarà funziona se le opzioni di formato sono impostate correttamente, come dettagliato nel post Zyx)

D'altra parte, è anche possibile visualizzare il testo esistente w con una larghezza di 72 caratteri aggiungendo modeline all'inizio o alla fine del file. Vedi :help modeline

Qualcosa come vim:tw=72 dovrebbe funzionare.

6

Stavo cercando una risposta alla stessa domanda e ho dovuto aggirarmi un po 'prima di trovare la soluzione nei documenti VIM. Quindi, ho pensato di aggiornare il thread e salvare gli altri il tempo.

Il problema nel mio caso era che il ftplugin predefinito disabilitava la larghezza del testo.

L'aggiornamento del tuo .vimrc con (:set tw=79 && :set formatoptions+=t) non funzionerà poiché i fplugin sono stati acquisiti dopo vimrc.

qui sono i passi che ho seguito:

1) scoprire quali sono i vostri formatoptions correnti (all'interno vim)

:set formatoptions? 
formatoptions=croql (note no 't') 

2) creare un file filetype.vim come suggerito da vimdocs (http://vimdoc.sourceforge.net/htmldoc/filetype.html#ftplugin-overrule)

Overrule the settings after loading the global plugin. 
You must create a new filetype plugin in a directory from the end of 
'runtimepath'. For Unix, for example, you could use this file: 
    vim ~/.vim/after/ftplugin/fortran.vim 
In this file you can change just those settings that you want to change. 

3) aggiungere la linea :set formatoptions+=t & & :set textwidth=79 in quel file.

Voilà! la prossima volta che aprirai il file, la larghezza del testo verrà impostata sui caratteri desiderati.

Come aiuto per il debug, è sempre possibile verificare quale file sta sovrascrivendo l'impostazione di vimrc anteponendo il comando a verbose. Quindi per es. se voglio controllare chi ha aggiornato le formatoptions ultimo, vorrei digitare

:verbose set formatoptions? 
formatoptions=croqlt 
Last set from ~/.vim/after/ftplugin/fortan.vim 
0

Ho avuto questo stesso problema esatto e trovato il seguente risolto il problema abbastanza bene per me:

autocmd FileType python setlocal textwidth=79 formatoptions+=t 

Sentitevi liberi di cambiare python di essere il tipo di file di scelta (ad es * o elenco separato da virgole python,ruby,go,sh,javascript)

Vedi :h fo-table per i dettagli di formatoptions

Problemi correlati