Cómo expandir / contraer secciones de diff en Vimdiff?


He comenzado a usar vimdiff hoy, y quería hacer algunas de las cosas que he dado por sentado en los editores de diferencias basados en Windows (como expandir/contraer una sección de diferencias, tener expansión de archivos completa/solo diferencias con 3 líneas de contexto por encima o por debajo, etc.). Actualmente solo conozco los siguientes comandos:

Atajos de teclado:

  • do - Obtener los cambios de otra ventana en la ventana actual.

  • dp - Poner a los cambios de la ventana actual a la otra ventana.

  • ]c - Saltar hasta el siguiente cambio.

  • [c - Saltar a los cambios anteriores.

  • CTRL+W, w - Cambiar a la otra ventana dividida (CTRL+W, CTRL+W hace lo mismo cosa, en caso de que sueltes la tecla CTRL un poco más tarde)

¿Podría alguien señalarme la dirección correcta para que podría replicar características similares?

Sería bueno si pudiera expandir/contraer líneas alrededor de los diffs, por ejemplo.

Author: Lyes CHIOUKH, 2011-03-13

4 answers

Aparte de los que mencionas, solo uso con frecuencia cuando diffing lo siguiente: {[14]]}

  • :diffupdate :diffu -> recalcular la diferencia, útil cuando después de hacer varios cambios vim ya no muestra cambios mínimos. Tenga en cuenta que solo funciona si los archivos se han modificado dentro de vimdiff. De lo contrario, utilice:
    • :e para recargar los archivos si han sido modificados fuera de vimdiff.
  • :set noscrollbind - > desactivar temporalmente el desplazamiento simultáneo en ambos búferes, reenvenibles mediante :set scrollbind y desplazamiento.

La mayor parte de lo que pediste es plegar: capítulo del manual de usuario de vim sobre plegar. Fuera de las diferencias en algún momento uso:

  • zo - > abrir pliegue.
  • zc - > cerrar pliegue.

Pero probablemente será mejor atendido por:

  • zr - > reducir el nivel de plegado.
  • zm -> un nivel más de plegado, por favor.

O incluso:

  • zR -> Reducir completamente el plegado, dije!.
  • zM - > fold Most!.

La otra cosa que pidió, usar n líneas de plegado, se puede encontrar en la sección del manual de referencia de vim sobre opciones , a través de la sección sobre diferencias :

  • set diffopt=<TAB>, luego actualice o agregue context:n.

También deberías echar un vistazo a la sección del manual del usuario en diff.

 216
Author: ninjalj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-31 03:37:54

Establece vimdiff para ignorar mayúsculas y minúsculas

Habiendo comenzado vim diff con

 gvim -d main.sql backup.sql &

Me parece molesto que un archivo tiene palabras clave MySQL en minúscula el otro en mayúscula mostrando diferencias en prácticamente todas las otras líneas

:set diffopt+=icase

Esto actualiza la pantalla dinámicamente y puede desactivarla de nuevo con la misma facilidad

 4
Author: zzapper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-22 06:40:41

En realidad si haces Ctrl+W W, no necesitarás agregar ese Ctrl extra. Hace lo mismo.

 3
Author: tubbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-24 09:04:07

Ctrl + w, w como se mencionó se puede usar para navegar de panel en panel.

Ahora puede seleccionar un cambio en particular solo y pegarlo en el otro panel de la siguiente manera.Aquí estoy dando un ejemplo como si quisiera cambiar mi pieza de código del panel 1 al panel 2 y actualmente mi cursor está en pane1

  • Use Shift-v para resaltar una línea y use las teclas arriba o abajo para seleccionar la pieza de código que necesita y continúe desde el paso 3 escrito a continuación para pegar sus cambios en el otro panel.

  • Use el modo visual y luego cámbielo

    1 haga clic en ' v ' esto lo llevará al modo visual 2 utilice la tecla arriba o abajo para seleccionar el código requerido 3 haga clic en, Esc ' tecla de escape 4 Ahora usa 'yy' para copiar o ' dd ' para cortar el cambio 5 haga 'ctrl + w, w' para navegar a pane2 6 haga clic en' p ' para pegar el cambio donde necesite

 0
Author: Pratheusha KK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-04 06:48:46