No puede hacer esto dentro del archivo original, pero puede hacerlo sin usar archivos separados, solo búferes separados. Esto debería funcionar si ha copiado una subrutina en el registro a
(por ejemplo, con "ay
escrito en modo visual) y otra subrutina en el registro b
:
enew | call setline(1, split(@a, "\n")) | diffthis | vnew | call setline(1, split(@b, "\n")) | diffthis
para automatizar:
let g:diffed_buffers=[]
function DiffText(a, b, diffed_buffers)
enew
setlocal buftype=nowrite
call add(a:diffed_buffers, bufnr('%'))
call setline(1, split(a:a, "\n"))
diffthis
vnew
setlocal buftype=nowrite
call add(a:diffed_buffers, bufnr('%'))
call setline(1, split(a:b, "\n"))
diffthis
endfunction
function WipeOutDiffs(diffed_buffers)
for buffer in a:diffed_buffers
execute 'bwipeout! '.buffer
endfor
endfunction
nnoremap <special> <F7> :call DiffText(@a, @b, g:diffed_buffers)<CR>
nnoremap <special> <F8> :call WipeOutDiffs(g:diffed_buffers) | let g:diffed_buffers=[]<CR>
cuenta que es posible desea establecer la opción hidden
si Vim se niega a abandonar el archivo modificado (consulte :h abandon
).
Esto funciona muy bien pero sigo recibiendo "No se borraron los búferes: bwitpeout! 2" (el número cambia) cuando llamo a WipeOutDiffs a través de f8. ¿Qué está causando esto? ¡¡Gracias!! –