A solução que você deseja não existe atualmente no Vim, embora alguns desenvolvedores estejam discutindo isso. Existem duas soluções que usei.
Um é excluir a linha 1 no arquivo A e as linhas 1-7 no arquivo B e diferenciar as linhas restantes (por exemplo, com :windo diffthis
).
O outro é usar um plugin como NrrwRgn para copiar as linhas de interesse para novos buffers, em seguida, diferenciar esses buffers. Uma boa característica do plugin NrrwRgn é que você pode fazer alterações nesses novos buffers e quando você os fecha, as mudanças são copiadas de volta para os buffers originais.
Para qualquer operação do Vim para a qual você pode especificar um intervalo de linhas, esse intervalo pode ser especificado de várias maneiras. Uma é usar números de linha. Outra é a linha visualmente selecionar a região. Veja
:help [range]
:help V
Usando o plugin NrrwRgn para resolver o seu exemplo, você colocaria o cursor na linha 2 do arquivo A e digitaria
Vjj\nr
para selecionar visualmente as linhas 2-4 ( Vjj
) e copiá-las para um novo buffer ( \nr
). Em seguida, coloque o cursor na linha 8 do arquivo B e repita a mesma sequência. Em cada um dos dois novos buffers, execute
:diffthis
Não é elegante, mas funciona.