Parece que linediff.vim pode ser o que você deseja: “Realizar um diff interativo em dois blocos de texto ”.
Você especifica cada bloco (intervalo de linhas) com seu comando :Linediff
(por exemplo, :4,10Linediff
ou faz uma seleção visual primeiro e, em seguida, digita :Linediff
(que sai como :'<,'>LineDiff
)).
Os intervalos podem ser do mesmo arquivo / buffer ou diferentes.
Depois de especificar dois intervalos, ele abre uma nova guia que possui dois novos buffers de modo diferencial (em uma divisão) para os intervalos especificados.
Você pode editar e :w
em qualquer um desses buffers para atualizar os intervalos originais.
Quando estiver pronto, :q
dos buffers de diff e :LinediffReset
para se livrar dos especificadores de intervalo nos buffers originais.
A resposta do Stackoverflow onde aprendi pela primeira vez sobre o linediff.vim também sugere alguns mapeamentos. Outras respostas a pergunta também mencionam uma solução personalizada e outro plug-in que podem resolver esse problema.