Объединить внешние изменения, сделанные во время редактирования

10

Если в редактируемый файл Vim вносятся внешние изменения, я понимаю, что могу перезагрузить содержимое файла :edit. Но предположим, что (внутренне) я внес изменения в файл, который хочу сохранить. Есть ли способ объединить два набора изменений (внешние и внутренние)? Из того, что я понимаю, :editпросто берет внешние изменения.

fuzzybear3965
источник
3
Должен читать :h autoread? Это то, что вы ищете?
statox
2
:autoreadсчитывает внешние изменения, но в случае внесения изменений в файл, который автоматически читается, vim сообщит мне, что в файл были внесены внешние изменения, так как я внес свои внутренние изменения. Я ищу способ объединить внешние изменения с внутренними.
fuzzybear3965
5
Вы ищете :h :DiffOrig?
Кристиан Брабандт
@ChristianBrabandt, никогда не поздно, верно? Это был отличный ответ. Я не знал, что это существовало.
fuzzybear3965

Ответы:

3

Чтобы развить комментарий Кристиана Брабандта , вот декомпозиция DiffOrigкоманды:

Полная команда:

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

Распад:

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

Альтернативная версия использует ++editопцию для чтения, она сохраняет значения опций, как будто редактирует файл.

Ссылки:

nobe4
источник