這裏有一個函數可以並排打開兩個新窗口,每個窗口都包含指定的寄存器內容(例如,稱爲DiffRegs(@a, @1)
)並對它們進行比較。新緩衝區將不會被寫入或修改:
" A list for bookkeeping..
let g:diffreg_buffers = []
function! DiffRegs(reg1, reg2)
" Preserve the unnamed register
let s:nonamereg = @@
let @@ = a:reg1
" new window
:new
normal P
setlocal nomodifiable
setlocal buftype=nofile
diffthis
call add(g:diffreg_buffers, bufnr('%'))
let @@ = a:reg2
:vsp +enew
normal P
setlocal nomodifiable
setlocal buftype=nofile
diffthis
call add(g:diffreg_buffers, bufnr('%'))
let @@ = s:nonamereg
endfunction " DiffRegs(reg1, reg2)
" Function to wipe all buffers we're diffing with the function above
function! EndDiffs()
for buffer in g:diffreg_buffers
exe ':buffer ' . buffer
diffoff
quit
endfor
let g:diffreg_buffers = []
endfunction " EndDiffs()
可以綁定那些你所選擇的組合鍵,但如果你沒有在每次通話後稱EndDiffs()
到DiffRegs()
,你會碰到的問題。
我不知道的人這是內置的...也許一個小腳本,可以做一些像':tabnew「ap:vsplit l」bp「? –