diff caractere


9

Existe uma ferramenta estável (opção / plugin de uma ferramenta existente: vimdiff, diff, etc) no Linux para fazer a diferença entre dois arquivos de texto em caracteres?

Gostaria de ver a subsequência comum mais longa entre meus dois arquivos destacada. Existe um algoritmo clássico de tempo polinomial para isso, mas as ferramentas padrão parecem funcionar apenas linha por linha.

Respostas:


2

O bom e velho cmpfaz um diff de caráter. Faz parte do UNIX há cerca de 40 anos. https://www.freebsd.org/cgi/man.cgi?query=cmp&apropos=0&sektion=0&manpath=Unix+Seventh+Edition&arch=default&format=html

Infelizmente, ele pára no primeiro caractere diferente, então não sei se essa resposta é útil para você.


Obrigado. Eu apenas corri cmp -bl ...depois de encontrar esta resposta e ela relatou várias diferenças e suas posições. Minha versão é cmp (GNU diffutils) 3.6.
Dzamo Norton

2

Instale diffchar( link do Github para aqueles que usam um carregador automático de plugins). Desde a v4.7, com o plug-in ativado, o Vim mostra automaticamente as diferenças mais exatas:

insira a descrição da imagem aqui

  • Você pode pressionar F7(o mapa de teclas padrão) para alternar entre o habitual e o plug-in. Reatribuir com:

    nmap <silent> <key> <Plug>ToggleDiffCharAllLines
    

    substituindo <key>por um código de chave apropriado.

  • Você pode usar mais cores:

    let g:DiffColors=100
    

Infelizmente, isso não funciona entre linhas, o melhor que posso dizer. No entanto, as regiões comuns são deixadas sem destaque (e dobradas, se crescerem demais), portanto, você poderá tirar vantagem disso.


Copiado da minha postagem do Vi e Vim Stack Exchange .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.