2010-04-26 8 views
8

Sto scrivendo un documento LaTeX in vim e l'ho fatto a capo a 80 caratteri per facilitare la lettura. Tuttavia, questo causa problemi con il monitoraggio delle modifiche con il controllo della versione. Ad esempio, inserendo "Lorem ipsum" all'inizio di questo testo:Vim, LaTeX, word-wrapping e controllo di versione

1 Dolor sit amet, consectetur adipiscing elit. Phasellus bibendum lobortis lectus 
2 quis porta. Aenean vestibulum magna vel purus laoreet at molestie massa 
3 suscipit. Vestibulum vestibulum, mauris nec convallis ultrices, tellus sapien 
4 ullamcorper elit, dignissim consectetur justo tellus et nunc.

risultati in:

1 Lorum ipsum dolor sit amet, consectetur adipiscing elit. Phasellus bibendum 
2 lobortis lectus quis porta. Aenean vestibulum magna vel purus laoreet at 
3 molestie massa suscipit. Vestibulum vestibulum, mauris nec convallis ultrices, 
4 tellus sapien ullamcorper elit, dignissim consectetur justo tellus et nunc.

Quando ho rivedere questo cambiamento di git, si racconta io che tutte le righe del paragrafo sono cambiate a causa del wrapping, anche se si è verificata una sola modifica semantica. Un modo per aggirare questo problema è avere ogni frase sulla propria linea. Questa sembra la stessa nel documento reso, ma la fonte ora è più difficile da leggere, perché ogni linea ha un bel diversa lunghezza della linea:

1 Lorum ipsum dolor sit amet, consectetur adipiscing elit. 
2 Phasellus bibendum lobortis lectus quis porta. 
3 Aenean vestibulum magna vel purus laoreet at molestie massa suscipit. 
4 Vestibulum vestibulum, mauris nec convallis ultrices, tellus sapien ullamcorper elit, dignissim consectetur justo tellus et nunc.

(Se io involucro morbido a 80, le cose ancora guardare male, solo in un modo diverso.)

E 'possibile avere il mio testo su disco con una nuova riga per frase, ma visualizzarlo e modificarlo in vim come se il testo di ogni paragrafo fosse una linea lunga, morbida avvolta in 80 caratteri? Presumo che richieda un po 'di vim-foo piuttosto che un pizzico di git o LaTeX.

+0

Hmm, visto quel problema prima, penso che la tua ipotesi sul soft wrap come soluzione sia giusta, ma non riesco a ricordare dove trovare quel "vim-foo" ... –

risposta

15

Non è necessario introdurre politiche di modifica strane: la funzione git che si sta utilizzando utilizza git diff --color-words per esaminare le modifiche.

+2

Grazie! Era molto più semplice di quanto mi aspettassi. – Bkkbrad

+3

Per chiarire, git considera ancora tutte le righe come modificate, ma mette in evidenza bene solo le parole che sono state cambiate. – Bkkbrad

+1

@Bkkbrad: Esatto, cambia solo il modo in cui 'diff' presenta tale cambiamento all'utente. BTW, per git, CVS o SVN puoi usare la vista diff di 'vim' con il plugin vcscommand (http://code.google.com/p/vcscommand/). Evidenzia le parole cambiate oltre ai blocchi modificati. –

0

Penso che un modo alternativo è quello di modificare la larghezza della finestra di vim come quello che ho fatto io di solito:

  1. in un primo momento, mettere "set involucro" in .vimrc per attivare la "avvolgere" caratteristica ;

  2. Per eseguire vim in un terminale virtuale, ho sempre impostato la larghezza della finestra del terminale di 80 caratteri (come "urxvt -geometry 80x38"). Pertanto, ogni volta che modifico un file in vim nel terminale virtuale, esso si avvolgerà automaticamente quando una riga contiene più di 80 caratteri.

  3. Se si preferisce gvim (gtk-vim, gnome-vim), è possibile impostare la dimensione della finestra di gvim aggiungendo una riga in .gvimrc, ad esempio "set lines = 38 columns = 80".

Spero che questo aiuti. :-)

-1

Ecco come risolvo il problema. In primo luogo è possibile utilizzare il comando vim (in stato normale) per cercare il file tex per le linee più lunghe di 80 caratteri:

/\%81v.\+/ 

si può definire come una macro in modo da non ricordare i comandi. Poi si digita nel normale stato

nF a 

(vale a dire, un po ' "n", un capitale "F", uno spazio "", un po' "a", un "Enter", e di una). Questo ti aiuta a spezzare la linea dolcemente dopo qualche parola.Puoi registrare questi cinque tratti chiave come una macro (howto: in stato normale premere "qa" per avviare la registrazione e basta fare i passaggi "nF a" e quindi premere Esc e "q" per interrompere. Durante la riproduzione, premere "@a "perché abbiamo memorizzato la macro in" a ".Per suonare la macro 100 volte (non fa male se la giochi troppe volte, si ferma automaticamente quando si finisce tutto il lavoro) premendo" 100 @ a "in normale stato)

Questo risolve il problema?

+0

Ci scusiamo, potrebbe essere utile con il word-wrapping in vim, ma questo non risolve veramente la mia domanda su come far capire a git che una singola parola cambiata non dovrebbe influenzare un intero paragrafo quando c'è un hard-wrapping. Grazie per aver pensato al problema, però! – Bkkbrad

+0

In qualche modo mi piace il word-wrapping perché penso che (nonostante questo tu senta che i paragrafi sono difficili da leggere) il wrapping non solo risolve il tuo problema, ma facilita anche il lavoro futuro come il code folding e le email via gmail (gmail avvolge una singola riga in modalità testo se è troppo lungo, quindi se hai inviato le tue patch potrebbero esserci dei problemi). Oltre a tutto ciò, ritengo che il sistema LaTeX incoraggi le persone a racchiudere lunghi paragrafi, poiché tratta semplicemente un'interruzione di una singola riga come uno spazio bianco. Cosa ne pensi? –