2010-12-29 18 views
5

El comando diff -w se utiliza para crear un archivo de comparación comparativo lado a lado (en lugar de paralelo)
y luego los veo usando vi a través del terminal ssh los cambios se indican con "<" o "|" o ">"
Como el archivo que estoy viendo es un código fuente, navegar solo por los cambios
usando los símbolos anteriores es difícil ya que también están en el código fuente C.help - change diff symbol "<", "|" or ">" a uno deseado?

¿Cómo puedo cambiar estos símbolos predeterminados a los deseados?
Amablemente ayuda. Gracias.

+0

Esto no está fuera de tema. Es una pregunta para los programadores sobre las herramientas de programación –

Respuesta

4

En lugar de ver la salida del diff -w en vim, puede utilizar incorporados en dif de vim:

vim -d file1 file2 

Esto abre vim en una división vertical con las dos archivos abiertos y diff marcas en el código. Esto es lo que parece:

alt text

Y funciona en un terminal demasiado:

alt text

se puede encontrar una breve tutorial here

+0

gracias. eso fue genial. – basilbc

2

De acuerdo con mi versión de diff (2.8.1 de las diferencias de GNU por FSF) -w se usa para cambiar el ancho de la salida; El parámetro -y produce una comparación lado a lado. En combinación, los dos no muestran más efecto que el parámetro -y solo, lo que significa que puede tener un alias en su perfil de terminal o en el perfil de terminal global que los alias difieren -y.

Digo todo esto porque todas las opciones para cambiar los símbolos ("<", "|" y ">") entran en conflicto con la opción -y. Si puede vivir sin uno al lado del otro, tiene la opción de otros dos estilos de salida incluidos o puede definir el suyo propio. Los dos estilos de salida son -c (contexto) y -u (unificado). (. Para obtener más información sobre lo que ven la diff Wikipedia page Para obtener más información sobre las opciones de ver el diff man page.)

Una más en profundidad solución sería utilizar las siguientes opciones:

diff --old-group-format="(deleted)---" \ 
    --new-group-format="(added)---" \ 
    --changed-group-format="(updated)---" \ 
    --unchanged-group-format="(nodiff)---" \ 
    old_file.c new_file.c 

Ahora el viejo líneas de archivos que no están presentes en el nuevo archivo se representan mediante (suprimido) ---

líneas del nuevo archivo que no están presentes en el archivo de edad están representados por (añadido) ---

líneas que han sido cambiados están representados por (actualizado) ---

líneas comunes a ambos archivos están representados por (nodiff): ---

ya que parece que hacer esto con la frecuencia suficiente, tiene la opción de convertirlo en un alias en su perfil de terminal o escribir un pequeño script de shell para manejarlo.Para obtener más opciones, consulte el manual section on options y vea específicamente el section on line group formats para obtener información sobre lo que puede colocar entre las comillas en las definiciones de formato.

Por supuesto, si debe tener uno al lado del otro, intente la idea de Nathan Fellman anterior. De lo contrario, existe la opción de utilizar una herramienta de GUI dedicada para él, como Kompare.

+0

gracias. no estaba al tanto de la opción 'y' para diff. – basilbc

Cuestiones relacionadas