这里有一个函数可以并排打开两个新窗口,每个窗口都包含指定的寄存器内容(例如,称为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“? –