2013-05-30 12 views
23

Podczas porównywania 2 plików w VIM, wolę linie do zawinięcia. Jednak vimdiff domyślnie ustawia wrap wrap na off.Wymuszanie vimdiff do zawijania linii?

Czy istnieje sposób automatycznego ustawiania zawijania linii dla każdego pliku różnicowego?

+0

Dzięki za wejście. Działa tylko wtedy, gdy vim jest uruchamiany w trybie diff. Interesuje mnie również wymuszanie zawijania wierszy, gdy diff jest uruchamiany z poziomu vima. Czy jest to również możliwe z podobnego polecenia? Dzięki! – mgouin

Odpowiedz

22

używam następujące:

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

FilterWritePre jest wyzwalany tuż przed wygenerowany diff są zapisywane w buforze, a setlocal wrap< kopiuje wartość globalna wrap. Oczywiście można też po prostu wymusić setlocal wrap.

+0

Dziękuję bardzo! Właśnie tego szukałem. Chciałbym zagłosować, ale nie mogę (zbyt nowe) ... – mgouin

+0

Nie wiem dlaczego, ale to nie działa. Używam vim 7 na komputerze debian. user2442259 Odpowiedź działa. – eddy147

+0

@ eddy147 Czy Twoje ustawienie globalne to 'wrap' lub' nowrap'? Jeśli to drugie, spróbuj tego samego 'autocmd' z' setlocal wrap' zamiast 'setlocal wrap <'. –

19

Możesz umieścić następujące elementy w swoim vimrc.

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

Właściwie to działa dla mnie i nie jest to taka, która jest akceptowaną odpowiedzią. – BHS

13

Kiedy Vim jest już uruchomiony, polecenia, aby rozpocząć diff i zawijanie są, każdy z plików podzielonym oknie:

:diffthis 
:set wrap 

Jednak jest nieprawidłowo wyświetlany diff + okład:

Jeśli masz długą linię na jednym pliku i krótką lub brakującą linię na drugiej, to linia długa zajmie, powiedzmy, 2 linie na pierwszej stronie, przez krótką lub brakującą linię zajmie tylko 1 linię na drugim bok.

Powoduje to przesunięcie w pionie dwóch plików o . Jasne, kolory pomagają wizualnie zrekompensować tę zmianę. Ale na kilka linii różnicy przesunięcie może być wyższe niż wysokość okna, przez co różnica jest nieczytelna.

Pytanie nie jest w pełni rozwiązane ... Proszę o poradę.

+2

': zestaw owijania owijania windo in w obydwa podziały. –

2

Musiałem rozwiązać tę kwestię dla demo gdzie chciałem vimdiff zawinąć tylko kiedy rozpoczęła od pewnego terminalu.

końcu uciekają na surowego:

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

Można uruchomić ten

vimdiff -c 'set wrap' -c 'wincmd w' -c 'set wrap' file1 file2 
Powiązane problemy