2010-04-26 20 views
8

Piszę dokument LaTeX w vim, i mam go trudno zawijać na 80 znaków, aby ułatwić czytanie. Powoduje to jednak problemy ze śledzeniem zmian za pomocą kontroli wersji. Na przykład, wstawienie "lorem ipsum" na początku tego tekstu:Vim, LaTeX, zawijanie tekstu i kontrola wersji

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.

skutkuje:

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.

Kiedy recenzję tej zmiany w git, to mówi że wszystkie linie akapitu zmieniły się z powodu owijania, mimo że nastąpiła tylko jedna semantyczna zmiana. Jednym ze sposobów obejścia tego problemu jest posiadanie każdego zdania na własnej linii. To wygląda tak samo w wydanego dokumentu, ale źródło jest teraz trudniejsze do odczytania, ponieważ każda linia ma zupełnie inną długość linia:

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.

(Gdybym miękki okład na 80 rzeczy nadal wyglądać źle, po prostu w inny sposób.)

Czy mogę mieć mój tekst na dysku z jednym znakiem nowej linii na zdanie, ale wyświetlać i edytować w vim tak, jakby tekst każdego akapitu był jedną długą linią, miękko owinięty w 80 znaków? Zakładam, że wymaga to trochę vim-foo zamiast podkręcania gita lub LaTeXa.

+0

Hmm, widziałem ten problem wcześniej, myślę, że przypuszczenie o miękką folią jako rozwiązanie ma rację, ale nie mogę sobie przypomnieć, gdzie okaże się, że „vim-foo” ... –

Odpowiedz

15

Nie trzeba wprowadzać dziwnych zasad edycji: funkcja git, której szukasz, używa git diff --color-words do sprawdzania zmian.

+2

Dziękujemy! To było o wiele prostsze, niż się spodziewałem. – Bkkbrad

+3

Aby wyjaśnić, git nadal uważa wszystkie linie za zmienione, ale ładnie podkreśla tylko te słowa, które zostały zmienione. – Bkkbrad

+1

@Bkkbrad: Tak, zmienia to tylko sposób, w jaki 'diff' przedstawia tę zmianę tobie. BTW, dla git, CVS lub SVN możesz użyć widoku 'vim' z wtyczką vcscommand (http://code.google.com/p/vcscommand/). Podkreśla zmienione słowa oprócz zmienionych bloków. –

0

myślę, alternatywnym sposobem jest zmiana szerokości okna vim jak co zrobiłem zwykle:

  1. najpierw umieścić „set wrap” w .vimrc aby umożliwić „wrap” funkcji ;

  2. Aby uruchomić vim w wirtualnym terminalu, zawsze ustawiałem szerokość okna terminala na 80 znaków (np. "Urxvt -geometry 80x38"). Tak więc, za każdym razem, gdy edytuję plik w vim w terminalu wirtualnym, będzie on automatycznie zawijany, gdy wiersz zawiera więcej niż 80 znaków.

  3. Jeśli wolisz gvim (gtk-vim, gnome-vim), możesz po prostu ustawić rozmiar okna gvim, dodając wiersz w .gvimrc, np. "Set lines = 38 columns = 80".

Nadzieję, że pomaga. :-)

-1

Oto jak rozwiązuję problem. Po pierwsze można użyć polecenia vim (w stanie normalnym), aby wyszukać plik tex dla linii dłuższych niż 80 znaków:

/\%81v.\+/ 

można zdefiniować go jako makro, tak aby nie pamięta poleceń. Następnie należy wpisać w stanie normalnym

nF a 

(to jest trochę "n", przez duże "F", przestrzeń "", trochę "a", określenie "Enter", i). To pomaga ci delikatnie złamać linię po jakimś słowie.Możesz zapisać te pięć naciśnięć klawiszy jako makro (howto: w normalnym stanie naciśnij "qa", aby rozpocząć nagrywanie i po prostu wykonaj kroki "nF a", a następnie naciśnij Esc i "q", aby zatrzymać. Podczas odtwarzania naciśnij "@a "ponieważ makro zostało zapisane w" a ". Aby odtworzyć makro 100 razy (nie boli, jeśli grasz go zbyt wiele razy, po prostu automatycznie zatrzymuje się po zakończeniu całej pracy), naciskając" 100 @ a "w normalnym trybie status)

Czy to w rozwiązaniu problemu?

+0

Niestety, które mogą być pomocne przy Zawijanie wierszy w vim, ale to naprawdę nie kieruję moje pytanie, jak mają git zrozumieć, że pojedyncza zmienił słowo nie powinno wpływać na cały paragraf kiedy jest ciężko i pakowania. Dzięki za myślenie o problemie! – Bkkbrad

+0

Jakoś lubię Zawijanie wierszy, ponieważ myślę, (mimo, że może czujesz owinięte akapity trudne do odczytania) owijania nie tylko rozwiązuje problem, ale również ułatwia dalsze prace takie jak zwijania kodu, a łatki poczty przez Gmaila (gmail otacza pojedynczą linię w trybie tekstowym, jeśli jest zbyt długi, więc jeśli wysłałeś swoje poprawki, mogą wystąpić problemy). Poza tym myślę, że system LaTeX zachęca ludzi do owijania długich akapitów, ponieważ traktuje pojedynczą linię jako białą przestrzeń. Co myślisz? –