Português (Brasil)

Ferramentas para desenvolvedores · Comparação de texto

Cada linha mudou? Finais de linha, espaços finais e listas técnicas em uma comparação

· Como funciona

diferença de texto finais de linha depuração

Pilhas de linhas paralelas com uma marca final extra e um marcador de primeira linha
Ilustração vetorial original ToolAcre

Diagnostica as três causas invisíveis de uma comparação que relata cada linha como diferente e mostra como saber qual delas você tem antes de culpar o autor.

O mesmo arquivo, salvo duas vezes, aparentemente reescrito — configura o caso comum de um arquivo editado em dois sistemas operacionais

Dois salvamentos podem parecer uma reescrita quando um editor altera caracteres invisíveis, mas o comportamento de ToolAcre depende de quais caracteres foram alterados. Ele normaliza os finais de linha antes da correspondência, enquanto os espaços na borda de uma linha e um U+FEFF no início permanecem como conteúdo de linha comum, a menos que outra opção altere a chave.

Construa um dispositivo de diagnóstico em vez de adivinhar pela cor. Compare um par que difere apenas nas terminações, outro que difere nos espaços finais e um terceiro com um BOM inicial. Os pares controlados revelam os limites da ferramenta de forma mais confiável do que um arquivo real contendo várias alterações invisíveis de uma só vez.

CRLF versus LF: o caractere no final de cada linha - explica por que o Windows termina as linhas com dois caracteres, o Unix com um, e como um diff vê o retorno de carro extra

`splitLines` substitui CRLF e CR solitário por LF e depois divide. Os testes estabelecem que todas as três convenções produzem as mesmas matrizes. Portanto, uma diferença somente CRLF é invisível mesmo quando Ignorar espaços em branco está desativado; a afirmação do esboço de que cada linha seria diferente contradiz esta implementação.

Uma nova linha final também não cria uma linha extra. Após a divisão, uma entrada vazia do terminal é removida. As linhas vazias genuínas no meio permanecem unidades de comparação, portanto o comportamento distingue uma convenção de finalização de arquivo de uma separação vertical intencional dentro do documento.

ToolAcre normaliza CRLF, CR e LF antes da comparação, então as alterações somente finais desaparecem

Os espaços finais permanecem nas linhas originais. Na comparação comum, `name=value` e `name=value ` possuem chaves diferentes. Ignorar espaço em branco apara ambas as extremidades e recolhe trechos internos, para que essa opção possa fazer com que o par corresponda, preservando o texto original à esquerda na linha igual exibida.

A biblioteca também implementa uma opção `ignoreTrailingWhitespace` mais restrita, mas a UI atual não a expõe. Os artigos não devem descrever uma caixa de seleção que os usuários não possam marcar. O painel fornecido oferece Ignorar caixa, Ignorar todas as diferenças de espaço em branco e Recolher execuções longas e inalteradas.

A marca de ordem de bytes na parte superior do arquivo - descreve o caractere U+FEFF que alguns editores acrescentam aos arquivos UTF-8 e por que isso faz com que apenas a primeira linha seja diferente

Uma marca de ordem de bytes UTF-8 decodificada em texto JavaScript é U+FEFF no início da primeira linha. `splitLines` não possui remoção BOM explícita. Com a correspondência comum, esse caractere pode fazer com que apenas a primeira linha seja diferente, enquanto as linhas posteriores permanecem iguais.

As operações de espaço em branco JavaScript podem tratar U+FEFF como espaço em branco quando Ignorar espaço em branco chama `trim`, mas este artigo não generaliza isso no comportamento de decodificação de arquivo. O editor recebe strings; ele não lê bytes de arquivos nem codificações de relatórios. Inspecione o caractere real quando a proveniência em nível de byte for importante.

Exemplo resolvido: diferenciar as três causas - fornece um caminho de decisão: uma diferença apenas na primeira linha aponta para BOM, cada linha aponta para finais, linhas dispersas apontam para espaços finais

Comece com `alpha beta` e `alpha beta`: o resultado é idêntico. Em seguida, compare `alpha beta` com `alpha beta`: o modo comum relata linhas de substituição, enquanto o modo de espaço em branco as corresponde. Finalmente, prefixe o alfa de um lado com U+FEFF e observe o efeito de primeira linha.

Essa sequência separa as causas usando operações comprovadas pelo repositório. Se cada linha ainda for diferente após o término da normalização, investigue o conteúdo, o recuo ou os caracteres finais em vez de culpar apenas CRLF. Se apenas a linha um for diferente, examine seus principais pontos de código antes de reescrever o arquivo inteiro.

Usando a opção de espaço em branco como um diagnóstico - mostra como ativar ignorar espaço em branco na comparação de texto de ToolAcre pode absorver espaço à direita e ruído de final de linha para que edições reais se destaquem

Ignorar espaços em branco é útil para ruído de espaço à direita porque corta e condensa chaves de linha. Não é responsável por ocultar CRLF versus LF; isso já aconteceu durante a divisão. Manter esses estágios separados evita uma conclusão enganosa sobre qual opção consertou a comparação.

Execute ambas as visualizações porque o corte pode ocultar recuo significativo e a condensação pode alterar valores de largura fixa ou literais de string. Um resultado normalizado silencioso indica que as chaves correspondem a essa transformação. Ele não certifica que os arquivos originais sejam idênticos em bytes ou semanticamente intercambiáveis.

O modo de espaço em branco diagnostica espaços à direita, enquanto os finais de linha já estão normalizados

A comparação de texto não converte arquivos, configura o Git, altera as configurações do editor ou expõe bytes hexadecimais. Ele aceita strings coladas e reporta operações de linha. Conselhos sobre `.gitattributes`, `core.autocrlf` ou reparo de codificação pertencem a ferramentas cujo comportamento pode ser verificado separadamente.

A ferramenta também não consegue distinguir como um caractere invisível entrou no texto. Um formatador, área de transferência, decodificador ou edição manual pode produzir a mesma string. Use a comparação para localizar a linha e, em seguida, inspecione o pipeline de origem antes de atribuir uma causa.

Conclusão: verifique os invisíveis antes de culpar o autor — resume o caminho do diagnóstico e observa que a comparação é executada no seu navegador, para que os arquivos confidenciais permaneçam na sua máquina

Verifique os invisíveis em uma ordem fixa: finais, espaços em branco finais ou internos e, em seguida, caracteres especiais iniciais. Os testes de ToolAcre fornecem um resultado firme para a primeira categoria e suas opções ajudam a isolar a segunda. O terceiro pode precisar de um inspetor de personagens fora desta rota.

A divisão da linha do lado do navegador faz com que as diferenças finais entre plataformas desapareçam por design. Isso é conveniente, mas também significa que esta ferramenta não pode provar que dois arquivos de origem usam os mesmos bytes físicos de nova linha. Escolha um utilitário com reconhecimento de byte quando preservar uma representação exata de fio ou repositório for o requisito.