Gabungkan perubahan eksternal yang dibuat saat mengedit

10

Jika ada perubahan eksternal yang dibuat untuk file yang sedang diedit di Vim saya mengerti bahwa saya dapat memuat ulang konten file dengan :edit. Tapi, anggaplah (secara internal) saya telah membuat perubahan pada file yang ingin saya pertahankan. Apakah ada cara untuk mengintegrasikan dua set perubahan (eksternal dan internal)? Dari apa yang saya mengerti, :editcukup lakukan perubahan eksternal.

fuzzybear3965
sumber
3
Harus membaca :h autoread? Itukah yang kamu cari?
statox
2
:autoreadmembaca perubahan eksternal tetapi jika terjadi perubahan pada file yang sedang dibaca secara otomatis, vim akan memberi tahu saya bahwa ada perubahan yang dibuat secara eksternal ke file tersebut karena saya telah melakukan pengeditan internal. Saya mencari cara untuk menggabungkan perubahan eksternal dengan yang internal.
fuzzybear3965
5
Apakah Anda mencari :h :DiffOrig?
Christian Brabandt
@ChristianBrabandt, tidak pernah ada kata terlambat, kan? Ini jawaban yang bagus. Saya tidak tahu bahwa ini ada.
fuzzybear3965

Jawaban:

3

Untuk menguraikan komentar Christian Brabandt , berikut adalah dekomposisi dari DiffOrigperintah:

Perintah penuh:

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

Penguraian:

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

Versi alternatif menggunakan ++editopsi untuk membaca, itu membuat nilai opsi seolah-olah mengedit file.

Referensi:

nobe4
sumber