オプション
元に戻す履歴を消去しない簡単な答えが 2 つあります。
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. gitdifftool
との差分を取り、ファイルをリロードします
git インデックス内のファイルと比較したい場合 (そして git の difftool を使用して)、次のようにすることができます:
- gvimを開いたままにし、
- ターミナルでコマンドを実行し、プログラムが gvim (または vim) の新しいインスタンスを開いて差分を処理できるようにします。
- すべて保存してください。
- 元の gvim に戻り、vim にファイルをリロードさせます。(少なくとも私の知る限りでは) 元に戻す履歴が残っているはずです。
長所/短所
オプション1
利点:
- 各変更は元に戻す履歴に保存されます
- vim のグラフィカルな差分は読みやすい
短所:
- git の difftool を使用しない
diff
vim の機能に依存しています。
オプション 2
利点:
- git の difftool を使用します
- よりクリーンな元に戻す履歴 (autopep8 の前と後の単一の元に戻す - 必要なものに大きく依存)
短所: