Scal zmiany zewnętrzne wprowadzone podczas edycji

10

Jeśli w edytorze Vima wprowadzono zmiany zewnętrzne, rozumiem, że mogę ponownie załadować zawartość pliku :edit. Załóżmy jednak, że (wewnętrznie) wprowadziłem zmiany w pliku, który chcę zachować. Czy istnieje sposób na zintegrowanie dwóch zestawów zmian (zewnętrznego i wewnętrznego)? Z tego, co rozumiem, :editpo prostu bierze zmiany zewnętrzne.

fuzzybear3965
źródło
3
Trzeba czytać :h autoread? Czy tego szukasz?
statox
2
:autoreadwczytuje zmiany zewnętrzne, ale w przypadku, gdy zostaną wprowadzone zmiany w pliku, który jest automatycznie odczytywany, vim powiadomi mnie, że zostały wprowadzone zmiany w pliku zewnętrznie, ponieważ dokonałem moich wewnętrznych zmian. Szukam sposobu na połączenie zmian zewnętrznych z wewnętrznymi.
fuzzybear3965
5
Szukasz :h :DiffOrig?
Christian Brabandt
@ChristianBrabandt, nigdy nie jest za późno, prawda? To była świetna odpowiedź. Nie wiedziałem, że to istnieje.
fuzzybear3965

Odpowiedzi:

3

Aby rozwinąć komentarz Christiana Brabandta , oto rozkład DiffOrigpolecenia:

Pełna komenda:

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
    \ | wincmd p | diffthis

Rozkład:

command DiffOrig        " create a new command named DiffOrig
vert new                " open a new buffer splitted vertically
| set bt=nofile         " set buffer type to scratch 
| r #                   " read the alternate buffer (opened file to diff)
| 0d_                   " delete the first line
| diffthis              " diff the current buffer
| wincmd p              " move cursor to opened file 
| diffthis              " diff the current buffer

Alternatywna wersja korzysta z ++editopcji odczytu, zachowuje wartości opcji jak podczas edycji pliku.

Bibliografia:

nobe4
źródło