Vous ne pouvez pas le faire dans le fichier d'origine, mais vous pouvez le faire sans utiliser de fichiers séparés, seulement des tampons séparés. Cela devrait fonctionner si vous copiez une sous-routine dans le registre a
(par exemple, avec "ay
tapé en mode Visual) et d'autres sous-programmes dans le registre b
:
enew | call setline(1, split(@a, "\n")) | diffthis | vnew | call setline(1, split(@b, "\n")) | diffthis
Automatiser :
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>
Notez qu'il est possible que vous souhaitiez définir hidden
si Vim refuse d'abandonner le fichier modifié (voir :h abandon
).