diff e vimdiff

Em: 16/02/2008 Tags: , Referencie do seu blog (Trackback)

Já precisou visualizar, de forma rápida, as diferenças entre dois arquivos de texto? Provavelmente já, mas se não precisou provavelmente um dia precisará.

A diferença entre o conteúdo de dois arquivos de texto (também conhecida popularmente como diff) pode ser calculada facilmente com o auxílio de dois programas do Linux (entre outros):

  • diff
  • vimdiff

diff

Considere os dois programas abaixo, a.py:

for n in range(1, 10):
    print 'Now n = %d' % n

print 'Finished!'

e b.py:

for n in range(1, 11):
    print 'Agora n = %d' % n

print 'Finished!'

Podemos utilizar o programa diff para descobrir quais linhas desses arquivos são diferentes. Invocamos o programa passando os arquivos a serem comparados como uma lista de parâmetros, da seguinte forma:

diff a.py b.py 

Teríamos a seguinte saída:

1,2c1,2
< for n in range(1, 10):
<     print 'Now n = %d' % n
---
> for n in range(1, 11):
>     print 'Agora n = %d' % n

A saída nos indica que as linhas 1 e 2 dos arquivos são diferentes. Mas não há nenhum destaque para os caracteres que são de fato as diferenças dessas linhas.

Como o programa diff não possui uma opção como “saída colorida”, acho que sua utilidade pára por aqui. Mas agora entra o vimdiff.

vimdiff

O vimdiff é um “modo alternativo” do Vim. Ele nos permite editar duas ou três versões de um arquivo simultaneamente enquanto nos mostra as diferenças entre elas. Não precisamos necessariamente editar esses arquivos: o simples fato de abrir 2 arquivos simultaneamente nesse programa já pode ser tudo o que precisamos, em algumas situações.

Veja na imagem abaixo como o Vim fica diferente nesse modo vimdiff:

vimdiff

O comando utilizado para abrir o Vim dessa forma foi o seguinte:

vimdiff a.py b.py

Se as cores utilizadas para iluminar as diferenças entre os arquivos não são as mais bonitas, ao menos o resultado é aquele que esperamos: agora podemos visualizar claramente as diferenças entre a.py e b.py. Se nossos arquivos, em vez de 6 linhas possuíssem 600, poderíamos percorrê-los linha por linha para visualizar as diferenças. Quando o vimdiff encontra diversas linhas vizinhas sem diferenças para os dois/três arquivos elas são “comprimidas” com o folding do Vim, para que possamos focar a atenção apenas nas diferenças, e não nas similaridades.

Para ter o vimdiff disponível no Ubuntu acredito que seja necessário instalar o pacote vim-full:

sudo apt-get install vim-full

Artigos relacionados:

Escreva um comentário (utilize o formato Markdown)