vim: показывать различие на W11 (файл изменен с момента начала редактирования) - PullRequest
4 голосов
/ 13 декабря 2011

когда файл изменяется, и я работаю над ним, vim предлагает мне два варианта:

W11: Warning: File "foo.bar" has changed since editing started
See ":help W11" for more info.
[O]K, (L)oad File:

Есть ли способ заставить меня показать разницу между содержимым буфера и тем, что находится на диске?

1 Ответ

8 голосов
/ 13 декабря 2011

Поместите следующее в ваш файл .vimrc, взятый из :h :DiffOrig

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

Затем при появлении запроса нажмите o для подтверждения и затем выполните :DiffOrig. Вам будет представлен дифференциал.

Если вы решили, что хотите извлечь файл с диска, выполните :e!, чтобы перезагрузить файл с диска.

Краткий обзор :DiffOrig

Вертикально разделить новый буфер и прочитать файл с диска и пометить оба буфера, которые нужно преобразовать.

Слава деталей для :DiffOrig

  • :vert {cmd} выполнит любой {cmd}, а любые разбиения будут разбиты по вертикали.
  • new открыть новый сплит с новым буфером
  • set bt=nofile установите 'buftype' на nofile, чтобы файл не записывался на диск
  • r - это сокращение от :read {file}. r # считывает в буфер альтернативный файл, который является буфером, который был только что разделен. Этот альтернативный файл - это файл, который читается с диска.
  • 0d_, что сокращенно от 0delete _. Когда альтернативный файл читается в нем, вверху остается пустая строка. 0delete _ удалит верхнюю строку в регистр черной дыры, чтобы он не связывался с другими регистрами.
  • diffthis установить буфер на diffed.
  • windcmd p переключается обратно в предыдущее окно. Это то же самое, что <c-w>p в обычном режиме.
  • diffthis устанавливает измененный буфер для включения в набор diff.

Для получения дополнительной информации:

:h :DiffOrig
:h :e
:h :diff
:h vert
:h new
:h r
:h d
:h "_
:h windcmd
:h diffthis
:h :c_#
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...