Herramientas de desarrollo · Comparación de texto
¿Cada línea cambió? Finales de línea, espacios finales y listas de materiales en una diferencia
· Cómo funciona
diferencia de texto finales de línea depuración
Diagnostica las tres causas invisibles de una comparación que informa que cada línea es diferente y muestra cómo saber cuál tiene antes de culpar al autor.
El mismo archivo, guardado dos veces, aparentemente reescrito: configura el caso común de un archivo editado en dos sistemas operativos.
Dos guardados pueden parecer una reescritura cuando un editor cambia caracteres invisibles, pero el comportamiento de ToolAcre depende de qué caracteres cambiaron. Normaliza los finales de línea antes de hacer coincidir, mientras que los espacios en el borde de una línea y un U+FEFF al principio siguen siendo contenido de línea normal a menos que otra opción cambie la clave.
Cree un dispositivo de diagnóstico en lugar de adivinar por el color. Compare un par que difiere sólo en los finales, otro que difiere en los espacios finales y un tercero con una lista de materiales inicial. Los pares controlados revelan los límites de la herramienta de manera más confiable que un archivo real que contiene varios cambios invisibles a la vez.
CRLF versus LF: el carácter al final de cada línea: explica por qué Windows termina las líneas con dos caracteres, Unix con uno, y cómo una diferencia ve el retorno de carro adicional
`splitLines` reemplaza CRLF y CR solitario con LF, luego se divide. Las pruebas establecen que las tres convenciones producen las mismas matrices. Por lo tanto, una diferencia de sólo CRLF es invisible incluso cuando Ignorar espacios en blanco está desactivado; La afirmación del esquema de que cada línea sería diferente contradice esta implementación.
Una nueva línea final tampoco crea una fila adicional. Después de la división, se elimina una entrada vacía del terminal. Las líneas vacías genuinas en el medio siguen siendo unidades de comparación, por lo que el comportamiento distingue una convención de final de archivo de una separación vertical intencional dentro del documento.
ToolAcre normaliza CRLF, CR y LF antes de la comparación, por lo que los cambios finales desaparecen
Los espacios finales permanecen en las líneas originales. En comparación ordinaria, `name=value` y `name=value ` tienen claves diferentes. Ignorar espacios en blanco recorta ambos extremos y colapsa los tramos internos, de modo que esa opción puede hacer que el par coincida mientras se conserva el texto original izquierdo en la fila igual mostrada.
La biblioteca también implementa una opción `ignoreTrailingWhitespace` más limitada, pero la interfaz de usuario actual no la expone. Los artículos no deben describir una casilla de verificación que los usuarios no puedan seleccionar. El panel enviado ofrece Ignorar mayúsculas y minúsculas, Ignorar todas las diferencias de espacios en blanco y Contraer ejecuciones largas sin cambios.
La marca de orden de bytes en la parte superior del archivo: describe el carácter U+FEFF que algunos editores anteponen a los archivos UTF-8 y por qué solo hace que la primera línea sea diferente.
Una marca de orden de bytes UTF-8 decodificada en texto JavaScript es U+FEFF al principio de la primera línea. `splitLines` no tiene una eliminación explícita de la lista de materiales. Con la coincidencia ordinaria, ese carácter puede hacer que sólo la primera fila difiera mientras que las líneas posteriores permanecen iguales.
Las operaciones de espacios en blanco de JavaScript pueden tratar U+FEFF como espacios en blanco cuando Ignorar espacios en blanco llama a `trim`, pero este artículo no generaliza eso en el comportamiento de decodificación de archivos. El editor recibe cadenas; no lee bytes de archivos ni codificaciones de informes. Inspeccione el carácter real cuando la procedencia a nivel de bytes sea importante.
Ejemplo resuelto: diferenciar las tres causas: proporciona una ruta de decisión: una diferencia de solo la primera línea apunta a una lista de materiales, cada línea apunta a finales, las líneas dispersas apuntan a espacios finales
Comience con `alpha beta` y `alpha beta`: el resultado es idéntico. Luego compare `alpha beta` con `alpha beta`: el modo normal informa filas de reemplazo, mientras que el modo de espacios en blanco las coincide. Finalmente prefije el alfa de un lado con U+FEFF y observe el efecto first-line.
Esa secuencia separa las causas mediante operaciones probadas en el repositorio. Si cada línea aún difiere después de finalizar la normalización, investigue el contenido, la sangría o los caracteres finales en lugar de culpar únicamente al CRLF. Si solo la línea uno difiere, examine los puntos de código principales antes de reescribir el archivo completo.
Uso de la opción de espacios en blanco como diagnóstico: muestra cómo habilitar ignorar espacios en blanco en la comparación de texto de ToolAcre puede absorber el ruido de los espacios finales y del final de línea para que las ediciones reales se destaquen
Ignorar espacios en blanco es útil para el ruido del espacio final porque recorta y condensa las claves de línea. No es responsable de ocultar CRLF versus LF; Eso ya sucedió durante la división. Mantener esas etapas separadas evita una conclusión engañosa sobre qué opción reparó la comparación.
Ejecute ambas vistas porque el recorte puede ocultar sangrías significativas y la condensación puede alterar valores de ancho fijo o literales de cadena. Un resultado normalizado silencioso dice que las claves coinciden bajo esa transformación. No certifica que los archivos originales sean idénticos en bytes o semánticamente intercambiables.
El modo de espacios en blanco diagnostica los espacios finales, mientras que los finales de línea ya están normalizados
La diferencia de texto no convierte archivos, configura Git, cambia la configuración del editor ni expone bytes hexadecimales. Acepta cadenas pegadas e informa operaciones de línea. Los consejos sobre `.gitattributes`, `core.autocrlf` o la reparación de codificación pertenecen a herramientas cuyo comportamiento se puede verificar por separado.
La herramienta tampoco puede distinguir cómo un carácter invisible ingresó al texto. Un formateador, portapapeles, decodificador o edición manual pueden producir la misma cadena. Utilice la comparación para localizar la fila y luego inspeccione la canalización de origen antes de asignar una causa.
Conclusión: verifique los elementos invisibles antes de culpar al autor: resume la ruta de diagnóstico y observa que la comparación se ejecuta en su navegador, por lo que los archivos confidenciales permanecen en su máquina
Verifique los elementos invisibles en un orden fijo: finales, espacios en blanco internos o finales, luego caracteres especiales iniciales. Las pruebas de ToolAcre dan un resultado firme para la primera categoría y sus opciones ayudan a aislar la segunda. El tercero puede necesitar un inspector de personajes fuera de esta ruta.
La división de línea del lado del navegador hace que las diferencias finales entre plataformas desaparezcan por diseño. Esto es conveniente, pero también significa que esta herramienta no puede demostrar que dos archivos fuente utilicen los mismos bytes de nueva línea físicos. Elija una utilidad con reconocimiento de bytes cuando sea necesario preservar una representación exacta del repositorio o del cable.