2010-03-24 14 views
7

He leído y VimdiffViewing differences with Vimdiff además de hacer varias búsquedas en Google utilizando cosas como "múltiples vimdiff", "vimdiff git", "vimdiff comandos", etc.¿Cómo se obtiene la bufspec durante el uso de vimdiff A través de Git

Cuando usando do o diffg obtengo el error "Más de dos búfers en modo diff, no sé cuál usar".

Cuando uso diffg v: fname_in obtengo "No matching buffer for v: fname_in".

De la documentación vimdiff:

: [intervalo] diffg [et] [bufspec]
Modificar el búfer de deshacer diferencia con otro buffer. Si se proporciona [bufspec], se usa ese buffer. Si [bufspec] se refiere al búfer actual, entonces no ocurre nada. De lo contrario, esto solo funciona si hay otro buffer en el modo diff .

y más:

Cuando 'diffexpr' no está vacía, Vim evalúa para obtener un fichero de diferencias en el formato mencionado. Estas variables se establecen en los nombres de archivo utilizados:

v: fname_in archivo original
v: fname_new nueva versión del mismo archivo
v: fname_out resultante fichero diff

Por lo tanto, tengo que conseguir el nombre de bufspec, pero las variables predeterminadas (fname_in, fname_new y fname_out) no están establecidas.

Ejecuté el comando git mergetool en una caja de linux a través de un terminal.

[Editar] Una solución parcial que generó más preguntas. Usé el "nombre de archivo" en la parte inferior del buffer. Es solo una media respuesta, porque ocasionalmente obtengo un error de archivo no existe. Creo que consistentemente es la versión remota del archivo que "no existe". Sospecho que esto tiene algo que ver con git e indexación.

¿Cómo se obtiene el valor de bufspec consistentemente mientras se usa vimdiff a través de git-mergetool?

Respuesta

8

El argumento [bufspec] anterior puede ser un número de almacenamiento intermedio, un patrón para un nombre de almacenamiento intermedio o una parte de un nombre de almacenamiento intermedio. Ejemplos:

  • :diffget usar el otro tampón que está en el modo diff
  • :diffget 3 Uso tampón 3
  • :diffget v2 uso el tampón que coincide v2 y está en modo de diferencias (por ejemplo, file.c.v2)

Siempre uso el número del búfer.

+0

Así que use: diffget y ¿cuál es el combo de caracteres después del segundo punto? –

+1

Eso es increíble. Pensarías que habría sido fácil de adivinar. Supongo que me estaba irritando demasiado para ver algo tan simple. * suspiro * Gracias ¡Gracias! –

4

Escriba "2" y luego ctrl-g, le muestra el número del buffer y el archivo.

0

para listar los números disponibles de amortiguación y nombres (valores válidos para bufspec), el uso :ls

(Desde el título de esta pregunta, que es lo que pensé que se le pedía, y era por eso que miré aquí.)

:ls enumerará los nombres y números de la memoria intermedia. La ventana contiene actualmente el cursor se denota por un %:

:ls 
    1 #a "Gemfile.lock"     line 1 
    2 %a "Gemfile.lock.LOCAL.4828.lock" line 1 
    3 a "Gemfile.lock.BASE.4828.lock" line 0 
    4 a "Gemfile.lock.REMOTE.4828.lock" line 0 

Al utilizar diffget o diffput, cualquier subcadena que coincide de forma única un nombre de tampón se puede utilizar como la argumento bufspec. Por ejemplo, suponiendo que el estado reflejado en el fragmento anterior, podemos utilizar:

diffget REM

para obtener la versión del cambio que está actualmente en el cursor Gemfile.lock.REMOTE.4828.lock 's.

Cuestiones relacionadas