Показать все локальные изменения в файле vim
Я знаю, что можно перейти к последнему изменению в vim, например так:
`.
- То есть обратный удар, за которым следует точка.
Я хотел бы знать, возможно ли получить историю внесенных изменений или хотя бы показать последние сделанные изменения, а не просто перейти к ним - есть ли способ использовать diff, чтобы помочь отобразить изменения?
Кроме того, сколько изменений хранится?
2 ответа
Вы можете перечислить изменения, набрав :changes
или используйте :DiffOrig
после помещения в .vimrc
Команда ниже, чтобы увидеть изменения, внесенные в исходный файл:
command! DiffOrig rightbelow vertical new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
Объяснение:
- команда DiffOrig справа внизу вертикаль новая
Создайте новую команду с именем DiffOrig
который разделит новое пустое вертикальное окно и наведет на него курсор.
Теперь у нас есть два буфера, если вы печатаете :buffers
или же :files
или же :ls
в нем будут перечислены все существующие буферы, каждый из которых имеет уникальный идентификационный номер и имя:
, Текущий буфер (где активен курсор) называется %
, Буфер, в котором ранее находился курсор, называется #
- установить bt=nofile
Установить buffertype
нового буфера в nofile
- читать #
Поместить содержимое альтернативного буфера (исходный) в текущий буфер (%) (после строки, в которой выполняется команда) (содержимое будет последним сохраненным статусом)
- 0d_
Удалите строку, чтобы переместить содержимое на одну строку вверх.
- diffthis
Активируйте diff в буфере для отображения изменений.
- винкмд р
Переместиться в другое окно буфера (команда такая же, как ctrl-w p
)
- diffthis
Активируйте diff в этом буфере, чтобы отобразить изменения.
Кажется, что на это уже ответили:
увидеть изменения в vim перед сохранением
после добавления следующего в мой.vimrc:
function! s:DiffWithSaved()
let filetype=&ft
diffthis
vnew | r # | normal! 1Gdd
diffthis
exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype
endfunction
com! DiffSaved call s:DiffWithSaved()
тогда я могу использовать следующую команду:
: DiffSaved
и я получу что-то вроде этого:
в примере я изменил F на F