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


10

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


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опцию для чтения, она сохраняет значения опций, как будто редактирует файл.

Ссылки:

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.