2013-05-30 22 views
23

Quando si diffondono 2 file in VIM, preferisco che le linee siano avvolte. Tuttavia, vimdiff imposta il wrap su off di default.Forzare vimdiff per avvolgere le linee?

C'è un modo per impostare il ritorno a capo automatico per ogni diff?

+0

Grazie per il vostro input. Funziona ma solo quando vim viene avviato in modalità diff. Sono anche interessato a forzare il ritorno a capo quando un diff viene avviato dall'interno di vim. È anche possibile da un comando simile? Grazie! – mgouin

risposta

22

Io uso il seguente:

autocmd FilterWritePre * if &diff | setlocal wrap< | endif 

FilterWritePre viene attivato immediatamente prima di un diff generato viene scritto nel buffer e setlocal wrap< copia il valore globale di wrap. Ovviamente è anche possibile forzare semplicemente setlocal wrap.

+0

Grazie mille! Questo e 'esattamente quello che stavo cercando. Vorrei votare, ma non posso (troppo nuovo) ... – mgouin

+0

Non so perché, ma questo non funziona. Sto usando vim 7 su debian machine. user2442259 La risposta funziona, però. – eddy147

+0

@ eddy147 Le impostazioni globali sono 'wrap' o' nowrap'? Se quest'ultimo, prova lo stesso 'autocmd' con' setlocal wrap' invece di 'setlocal wrap <'. –

19

È possibile inserire quanto segue in vimrc.

au VimEnter * if &diff | execute 'windo set wrap' | endif 
+1

In realtà, questo funziona per me e in qualche modo non è quello che è la risposta accettata. – BHS

13

Quando Vim è già stato avviato, i comandi per avviare un diff e un involucro sono, su ciascuno dei file finestra divisa:

:diffthis 
:set wrap 

Tuttavia, viene visualizzato in modo non corretto il diff + involucro:

Se hai una lunga fila su un file e una linea corta o mancante sull'altro, allora la lunga linea occuperà, diciamo, 2 linee sul primo lato, per la linea corta o mancante occuperà solo 1 riga sul secondo lato.

Questo risulta in uno spostamento verticale dei 2 file. Certo, i colori aiutano a compensare visivamente questo cambiamento. Ma su più righe di diff, lo spostamento potrebbe essere superiore all'altezza della finestra, rendendo diff illeggibile.

Quindi la domanda non è completamente risolta ... Si prega di avvisare.

+2

': windo set wrap' imposta l'avvolgimento in entrambe le fessure. –

2

ho dovuto risolvere questo problema per una demo in cui ho voluto vimdiff per avvolgere solo volta lanciato da un certo terminale.

ho finalmente fatto ricorso al greggio:

alias vimdiff='vimdiff +"windo set wrap"' 
vimdiff file.orig file 
1

È possibile eseguire questo

vimdiff -c 'set wrap' -c 'wincmd w' -c 'set wrap' file1 file2