选项
有两个简单的答案不会消除您的撤消历史记录。
1. 与 Vim 中保存的文件进行比较
DiffWithSaved
很久以前在网上发现了这个功能,非常好用。在这种情况下,您只需在终端中运行 autopep8,当Gvim
要求重新加载文件时,选择否,然后运行此功能,它将弹出一个包含新文件的暂存缓冲区并允许您进行更改。
" copy this to your vimrc or source it
" tells vim not to automatically reload changed files
set noautoread
function! DiffWithSaved()
let filetype=&ft
diffthis
vnew | r # | normal! 1Gdd
diffthis
exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype
endfunction
" sets up mappings to function
com! DiffSaved call DiffWithSaved()
map <Leader>ds :DiffSaved<CR>
一旦你运行它,你可以使用 vim copy-diff 和其他 diff 命令来快速完成并接受/不接受更改。另外,所有内容都将存储在撤消历史记录中。
" run these commands after sourcing the above function
" % expands to filename (also %:h to head, %:t to tail)
" if it throws an error, just do :cd %:h first
:!autopep8 --in-place %
:DiffSaved
2. 与 git 比较difftool
并重新加载文件
如果你想与 git index 中的文件进行比较(并使用 git 的 difftool),你可以执行以下操作:
- 让 gvim 打开,
- 在终端中运行您的命令,让程序打开一个新的 gvim(或 vim)实例来处理差异。
- 全部保存。
- 回到你原来的 gvim,让 vim 重新加载文件,(至少据我所知)你的撤销历史应该保留。
优点缺点
选项1
好处:
- 每个更改都将保存在您的撤消历史记录中
- vim 中的图形差异易于阅读
缺点:
- 不会使用 git 的 difftool
- 依赖于vim的
diff
功能。
选项 2
好处:
- 使用 git 的 difftool
- 更清晰的撤消历史记录(来自 autopep8 前后的单个撤消 - 非常取决于您想要的内容)
缺点: