2010-04-26 8 views
8

Ich schreibe ein LaTeX-Dokument in Vim, und ich habe es schwer mit 80 Zeichen zu wickeln, um das Lesen zu erleichtern. Dies führt jedoch zu Problemen bei der Verfolgung von Änderungen mit der Versionskontrolle. Zum Beispiel: "Lorem ipsum" am Anfang dieses Textes einfügen:Vim, LaTeX, Word-Wrapping und Versionskontrolle

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.

Ergebnisse 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.

Wenn ich diese Änderung in git überprüfen, es sagt Ich habe festgestellt, dass sich alle Zeilen des Absatzes wegen des Wrappings geändert haben, obwohl nur eine semantische Änderung stattgefunden hat. Ein Weg um dieses Problem herum ist, jeden Satz in einer eigenen Zeile zu haben. Das sieht das gleiche in dem gerenderten Dokument, aber die Quelle ist jetzt schwieriger zu lesen, weil jede Zeile hat eine ganz andere Zeilenlänge:

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.

(Wenn ich weiche Wickel bei 80, noch die Dinge aussehen schlecht, nur auf eine andere Art.)

Ist es möglich, meinen Text auf der Festplatte mit einem Zeilenumbruch pro Satz zu haben, aber in vim anzuzeigen und zu bearbeiten, als ob der Text jedes Absatzes eine lange Zeile wäre, weich umwickelt 80 Zeichen? Ich nehme an, es erfordert etwas vim-foo, anstatt git oder LaTeX zu optimieren.

+0

Hmm, sah das Problem vor, ich denke, Ihre Vermutung über Soft-Wrap als Lösung ist richtig, aber kann mich nicht erinnern, wo das "vim-foo" zu finden ... –

Antwort

15

Keine Notwendigkeit, seltsame Bearbeitungsrichtlinien einzuführen: Die git Funktion, die Sie suchen, verwendet git diff --color-words, um Änderungen zu überprüfen.

+2

Vielen Dank! Das war viel einfacher als ich erwartet hatte. – Bkkbrad

+3

Zur Klarstellung, git sieht immer noch alle Zeilen als geändert an, aber es hebt nur die Wörter hervor, die geändert wurden. – Bkkbrad

+1

@Bkkbrad: Richtig, es ändert nur die Art, wie 'diff 'sich für dich ändert. Übrigens, für Git, CVS oder SVN können Sie die Diff-Ansicht von 'vim' mit dem Plugin vcscommand (http://code.google.com/p/vcscommand/) verwenden. Es markiert geänderte Wörter zusätzlich zu geänderten Blöcken. –

0

Ich denke, eine alternative Art und Weise ist, wie die Breite des Vim-Fensters zu ändern, was ich tat in der Regel:

  1. zuerst setzen „gesetzt wrap“ in der .vimrc der „wrap“ Funktion aktivieren ;

  2. Um vim in einem virtuellen Terminal auszuführen, setze ich die Fensterbreite des Terminals immer als 80 Zeichen (wie "urxvt -geometry 80x38"). Wenn ich also eine Datei in vim im virtuellen Terminal bearbeite, wird sie automatisch umgebrochen, wenn eine Zeile mehr als 80 Zeichen enthält.

  3. Wenn Sie den gvim (gtk-vim, gnome-vim) bevorzugen, können Sie einfach die Größe des gvim-Fensters durch Hinzufügen einer Zeile in .gvimrc wie "set lines = 38 columns = 80" festlegen.

Hoffe, dass hilft. :-)

-1

So löse ich das Problem. Zunächst einmal sollten Sie vim-Befehl (im Normalzustand) benutzen, um Ihre tex-Datei für die Zeilen, die länger als 80 Zeichen suchen:

/\%81v.\+/ 

Sie es als ein Makro definieren, um nicht die Befehle zu erinnern. Dann geben Sie in den normalen Status

nF a 

(das heißt, ein wenig "n", ein großes "F", ein Raum "" ein wenig "a", ein "Enter", und ein). Dies hilft Ihnen, Ihre Linie nach einem Wort zu brechen.Sie können diese fünf Tastenschläge als Makro aufnehmen (Howto: Drücken Sie im Normalzustand "qa" um die Aufnahme zu starten und führen Sie einfach die Schritte "nF a" aus und drücken Sie dann Esc und "q" um zu stoppen. Drücken Sie während der Wiedergabe "@a "Weil wir das Makro in" a "gespeichert haben. Um das Makro 100 Mal zu spielen (es tut nicht weh, wenn Sie es zu oft spielen; es stoppt nur automatisch, wenn der ganze Job beendet ist), indem Sie" 100 @ a "normal drücken Status)

Löst dies Ihr Problem?

+0

Sorry, das kann beim Umbruch in vim hilfreich sein, aber das ist nicht wirklich meine Frage darüber, wie man git versteht, dass ein einzelnes, geändertes Wort keinen ganzen Absatz betrifft, wenn es einen harten Umbruch gibt. Danke, dass Sie über das Problem nachgedacht haben! – Bkkbrad

+0

Irgendwie mag ich Word-Wrapping, weil ich denke (obwohl Sie vielleicht eingewickelte Absätze schwer zu lesen fühlen) Wrapping löst nicht nur Ihr Problem, sondern erleichtert auch die zukünftige Arbeit wie Code-Faltung und E-Mail-Patches über Google Mail (Google Mail umschließt eine einzelne Zeile im Textmodus, wenn es zu lang ist, also wenn Sie Ihre Patches gesendet haben, könnte es Probleme geben). Neben all dem denke ich, LaTeX System ermutigt Menschen, lange Absätze zu wickeln, denn es behandelt nur einen einzigen Zeilenumbruch als Leerraum. Was denken Sie? –