Command Palette

Search for a command to run...

Verificador de diferenças de texto: pare de ver as mudanças que você não pode ver

Verificador de diferenças de texto: pare de ver as mudanças que você não pode ver

T
Toolz Team
|Jul 5, 2026|14 min ler

Parte da coleção Ferramentas de texto

Verificador de diff de texto

Compare dois textos e encontre diferenças. Destaque adições, remoções e partes comuns com comparação de palavras ou níveis de caracteres.

Usar Verificador de diff de texto

Um cliente do WP Adminify enviou-me uma vez duas exportações das suas definições de 'plugin' - & quot; antes da actualização, tudo funcionava; depois, o menu do administrador está avariado Nada mais mudou." Dois blobs JSON, cada um com cerca de 340 linhas Eu li-os lado a lado, duas vezes, e concordei com confiança com ele: idêntico Nada mudou Deve ser o nosso bug.

Não foi. Quando finalmente parei de confiar em meus olhos e divisei os dois arquivos, lá estava na linha 217: uma tecla de função do menu havia saído de "administrator" até "administrator "- com um espaço à direita. Um personagem invisível. Eu pessoalmente li duas vezes, porque os olhos humanos não & #39; t comparar cordas; eles combinam formas de padrões e administrator e administrator têm a mesma forma.

Esse ticket de suporte mudou minha regra permanentemente: Se dois textos têm mais de dez linhas, não os comparo lendo. nunca. Um algoritmo de diff não tem atalhos de correspondência de padrões para enganar - ele compara cada caractere e relata exatamente o que difere O ferramenta diff de texto No Toolz.dev faz isso no seu navegador, o que significa que as configurações do cliente, contratos e código inédito nunca saem da sua máquina. Veja como o diffing realmente funciona e como usá-lo bem.

tl;dr: Nunca compare visualmente textos com mais de algumas linhas - os olhos perdem espaços à direita, dígitos trocados e edições de uma única palavra Cole ambas as versões no ferramenta diff de texto: verde = adicionado, vermelho = removido, calculado pela mesma família de algoritmos de Myers que alimenta git diff. usar modo de linha Para código e configurações, Modo Palavra para prosa e contratos. Para dados estruturados, o json diff Compara por significado em vez de texto. Tudo roda o lado do cliente.


Como um algoritmo de diff realmente funciona?

A ideia central: encontre o Subsequência mais longa comum (LCS) dos dois textos - a sequência mais longa de linhas (ou palavras, ou caracteres) que aparece em ambos, na mesma ordem Tudo no LCS é & quot; inalterado." O que quer que & #39; s deixado na versão A é uma exclusão; o que quer que & #39; s deixado na versão B é uma adição A & quot; modificado & quot; linha é apenas uma exclusão e uma adição que acontece de sentar um ao lado do outro.

A maneira padrão de calcular isso de forma eficiente vem do artigo de Eugene Myers de 1986, ?um algoritmo de diferença O(nd) e suas variações?. A parte elegante é o que o limite de complexidade diz: N é o tamanho da entrada, mas é o Número de diferenças. Dois textos quase idênticos se diff quase instantaneamente, não importa quanto tempo eles sejam, porque o trabalho do algoritmo & #39; s é dimensionado com o quão diferentes eles são, não apenas com o tamanho. É por isso que a difusão de duas configurações de 300 linhas que diferem em uma linha parece instantânea - o algoritmo não está fazendo quase nada, que é exatamente a situação em que seus olhos estão fazendo mais trabalho e falhando.

Esta mesma família de algoritmos é o mecanismo padrão em git diff, gnu diffe a maioria das ferramentas de comparação que você já usou. (GIT também oferece patience e histogram variantes que às vezes produzem agrupamentos mais legíveis por humanos das mesmas mudanças - o pôr de mudanças é a mesma, a apresentação é diferente.)

Uma propriedade não óbvia: um diff nem sempre é único. Se você adicionar uma linha em branco entre duas linhas em branco existentes, "qual" linha em branco é nova é genuinamente ambígua, e ferramentas diferentes podem destacar diferentes. Ambas as respostas estão corretas.

Diferença de linha, palavra ou caractere - qual modo quando?

A granularidade que você compara em muda para o que a saída é boa. Errar é a principal razão pela qual as pessoas acham a saída do diff "ruidosa".

nível de linha nível de palavra nível de personagem
compara Linhas inteiras como átomos palavras individuais Personagens individuais
Uma edição de uma palavra mostra como Linha inteira removida + adicionada novamente Só essa palavra apenas as letras alteradas
melhor para Código, configurações, linhas CSV Prosa, contratos, documentos Erros de digitação, hashes, strings codificadas
defeito Edições de parágrafo longo: você ainda caça dentro da linha Barulho em todo o texto refluído/reembalado Ilegível para grandes edições
usuário clássico git diff Legal Blackline / Revisão editorial "Essas duas chaves de API parecem idênticas"

Exemplo concreto. Original: The quick brown fox jumps over the lazy dog. Modificado: The quick red fox leaps over the lazy cat.

  • modo de linha sinaliza toda a frase como alterada - precisa, inútil.
  • Modo Palavra Destaques exatamente brown→red, jumps→leaps, dog→cat.
  • Modo de personagem é um exagero aqui, mas é o único modo que pegaria admlnistrator VS administrator.

Regra geral: o texto estruturado (uma afirmação significativa por linha) deseja o modo de linha; o fluxo de texto deseja o modo palavra; o modo de personagem é uma lupa que você retira quando os outros dois dizem "alterado" e você não pode ver por quê. Meu bug no espaço de track é o caso canônico do modo de personagem.

Quando uma ferramenta diff autônoma é melhor que o git?

O diff do Git é excelente Para coisas que vivem no mesmo repositório. Uma quantidade surpreendente de trabalho de comparação não:

Tickets de suporte. O cenário da minha introdução - duas configurações exporta de um cliente Eles' não estão em qualquer repo. Colar ambos no ferramenta diff de texto E a resposta aparece em segundos em vez de duas leituras com falha.

Derivação de configuração. Preparação de configuração do Nginx vs produção do Nginx. corrente .env VS o backup de antes de as coisas quebrarem. git diff Não é possível ver arquivos em dois servidores diferentes; Copy-Paste Can.

Verificação do formatador. Você executou mais bonito (ou phpcs ou preto) em um arquivo e deseja que ele tenha mudado de confiança Somente formatação. Diff o antes e depois: se você vir algo diferente de espaços em branco, aspas e ponto e vírgula, o formatador tocou a lógica e deseja saber agora.

Duas respostas da API. O Staging retorna um corpo JSON, a produção retorna outro e o front-end só quebra na preparação. Diferente das respostas. (Para JSON especificamente, prefira o json diff- ele compara a estrutura analisada, então a ordem das chaves e os espaços em branco don' t criam falsos positivos. Execute ambas as cargas úteis através do formatador json Primeiro, se você quiser um diff de texto legível.)

Documentos e contratos. Um fornecedor devolve o & quot; o mesmo contrato com pequenas actualizações." Word-mode diff é como você descobre que as condições de pagamento passaram de Net 30 para Net 15 em um documento de 40 páginas Editores e advogados sabem disso para sempre - eles chamam isso de blackline ou redline.

Arquivos de tradução e localização. Comparando duas versões de um .po arquivo para ver quais strings realmente mudaram antes de enviá-lo de volta aos tradutores - um fluxo de trabalho real do WP Adminify que economiza o pagamento para retraduzir 400 strings inalteradas.

O fio condutor: no momento em que ambas as versões existem como texto que você pode selecionar, uma ferramenta de diff responde & quot; o que mudou?" mecanicamente. E porque a ferramenta Toolz.dev é do lado do cliente, colando um cliente' s config ou um contrato não assinado does' t transmiti-lo em qualquer lugar - o mesmo argumento que o resto do Caixa de ferramentas de privacidade.

Como você lê a saída do diff sem se enganar?

A convenção de cores é universal: Red é o conteúdo exclusivo da versão antiga (removido), o verde é a nova versão (adicionado), o texto inalterado torna simples para o contexto. Uma linha alterada aparece como uma linha vermelha seguida de sua substituição verde.

Três hábitos que tornam a revisão do Diff realmente confiável:

Coloque as versões nos slots certos. Antigo/original à esquerda (ou primeiro campo), novo/modificado à direita Troque-os e cada adição será lida como uma exclusão - I & #39; vi pessoas depurarem a direção errada por dez minutos por causa disso Se a saída olhar para trás, provavelmente é.

Decida o que é ruído antes de começar. Comparando código reformatado? alterações de espaço em branco são ruído - normalize ou ignore-as Comparando as configurações do YAML? espaço em branco é sentido- indentação é estrutura no YAML, então valide ambos os lados no Validador YAML E trate cada espaço como um sinal. A mesma ferramenta, as políticas opostas e a escolha errada, enterra a verdadeira mudança no ruído ou a esconde.

Leia cada pedaço, não apenas o primeiro. O cliente & #39; s trailing space foi mudança #1 de 1. mas quando um diff mostra quatro mudanças e o primeiro explica seu sintoma, a tentação de parar de ler é forte - e mudança #3 é às vezes o que morde você na próxima semana O diff já fez a parte difícil; don & #39; t re-introduzir erro de amostragem humana na última etapa.

O que um diff de texto não pode lhe dizer?

Vale a pena ser honesto sobre os limites:

  • Os blocos movidos são lidos como delete + add. Corte uma função na parte superior de um arquivo e cole-a na parte inferior: o diff relata que ele removeu e acrescentou, não movido. Algumas ferramentas especializadas detectam movimentos; o LCS simples não.
  • Ele compara o texto, não o significado. 0.1 + 0.2 e 0.3 diff como diferentes (eles são), mas também agir diferentemente em ponto flutuante - e inversamente, "key": 1 VS "key": 1.0 Pode ser textualmente diferente, mas semanticamente idêntico em sua língua. Comparação estruturada (como o json diff) fecha parte dessa lacuna para formatos de dados.
  • O conteúdo binário está fora do escopo. Imagens, PDFs como bytes, executáveis - diff de texto precisa de texto Extraia o texto primeiro ou use ferramentas específicas de formato.
  • Case e codificação são comparados literalmente. READMEreadme, e uma citação encaracolada UTF-8 ≠ uma aspas retas ASCII, embora pareçam idênticas na maioria das fontes. (Outra armadilha de padrão de forma para os olhos, outra vitória para o algoritmo.) Pré-normalize com o conversor de caixa Se o caso não importa para sua comparação.

Perguntas frequentes

Posso comparar arquivos ou apenas texto colado?

o ferramenta diff de texto funciona em texto colado: abra cada arquivo em qualquer editor, copie, cole ambos os lados Isso o torna independente de formato - qualquer coisa que o texto legível do & #39; (código, configuração, CSV, SQL, prosa) possa ser comparado, independentemente da extensão.

Existe um limite de tamanho para comparação?

O limite prático é a memória do seu dispositivo, pois o processamento está no navegador. Arquivos com alguns milhares de linhas se comparam instantaneamente; o custo do algoritmo Myers é escalado com o número de divergência, então mesmo textos grandes, mas semelhantes, permanecem rápidos. Centenas de milhares de linhas com diferenças massivas podem levar alguns segundos.

Qual modo de diff devo usar para o código?

Modo de linha. O código é naturalmente uma instrução por linha, portanto, a saída no nível da linha mapeia de forma limpa como você pensa sobre a mudança. Mude para o modo palavra ou caractere somente quando uma linha for sinalizada conforme alterada e você puder' t identificar a diferença dentro dele - isso' geralmente espaços em branco, aspas ou um único caractere.

Qual é o melhor modo para contratos e prosa?

Modo palavra. alterações de prosa são geralmente substituições de palavras e cláusulas inseridas dentro de parágrafos longos; o modo de linha sinalizaria parágrafos inteiros e deixaria você caçando O destaque no nível da palavra mostra exatamente quais palavras mudaram - a mesma abordagem de uma linha preta legal.

O diff modifica ou armazena meu texto?

não O destaque existe apenas na saída renderizada; seu texto de entrada permanece inalterado e, como a ferramenta é executada inteiramente do lado do cliente, nenhuma versão é transmitida ou armazenada em nenhum lugar. Feche a guia e os textos desapareceram.

Por que o diff destaca uma linha que parece idêntica?

Quase sempre personagens invisíveis: espaços à direita, tabulações vs espaços, janelas \r\n vs unix \n finais de linha, espaços não quebrando ou sósias Unicode (aspas encaracoladas versus retas).Esta é precisamente a classe de mudança que os olhos humanos não conseguem ver e os algoritmos de diff sempre pegam - meu ticket de suporte no espaço traseiro foi um deles.

Ele pode detectar o texto movido?

Não como um movimento A difusão padrão baseada em LCS relata um bloco movido como excluído do local antigo e adicionado no novo Se você suspeitar de um movimento, pesquise o & quot; added" texto no original - um acerto exato em outro lugar do arquivo confirma.

Como o JSON Diff é diferente do Diff de texto?

O diff de texto compara os personagens; json diff Analisa os dois documentos e compara a estrutura. As chaves reordenadas, recuo alterado e vírgulas à direita não produzem diferenças estruturais, então você vê apenas alterações nos valores e chaves reais. Use sempre que ambos os lados forem JSON válidos; volte ao diff de texto quando não estiver.

Como ignoro o espaço em branco ou o caso ao comparar o texto?

Decida primeiro se o espaço em branco é ruído ou sinal: no código reformatado é ruído, mas no recuo YAML ou Python é estrutura Quando é ruído, normalize ambos os lados antes de se difundir - colapse espaços repetidos, strip trailing whitespace, e faça finais de linha consistentes - então apenas mudanças reais permanecem Para ignorar caso, minúsculo ambos os textos antes de comparar, uma vez que o diff trata README e readme como diferentes por padrão.

Qual algoritmo o GIT DIFF usa?

Por padrão git diff usa uma variante do algoritmo de Myers, a mesma abordagem de sequência comum mais longa de Eugene Myers' Artigo de 1986 que a maioria das ferramentas de diff compartilha O Git também oferece variantes de paciência e histograma que podem agrupar as alterações de forma mais legível, mas relatam o mesmo conjunto de diferenças - apenas a apresentação muda Esta ferramenta usa a mesma família de algoritmos de Myers.

Frequently Asked Questions

The Text Diff tool works on pasted text: open each file in any editor, copy, paste both sides. That makes it format-agnostic — anything that's readable text (code, config, CSV, SQL, prose) can be compared, regardless of extension.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!