Estoy trabajando en una secuencia de comandos que se ha vuelto bastante intrincada. Sospecho que hay varias secciones que tienen un código casi idéntico. ¿Puedo (y cómo puedo) abrir el archivo en vim, con dos (o más) ventanas en el búfer, y diferir los contenidos de las ventanas en el mismo archivo? vimdiff parece funcionar solo en dos archivos. Si hago una copia del archivo e intento modificar las dos versiones, el origen del diff permanece bloqueado al principio del archivo. Aunque puedo deslizar las ventanas sin abrir, y mover las ventanas a las partes del archivo que quiero comparar, las diferencias no se muestran. ¿Algún consejo o sugerencia? Podría cortar y pegar las secciones que quiero comparar con diferentes archivos y luego aplicar vimdiff, pero luego corro el riesgo de perderme en la sección de donde traté de parchar los archivos por separado, y estoy seguro de que debe haber una forma más directa. , manera más fácil.Ventanas diferenciadas en vim
Respuesta
lo que suelo hacer es diff a una copia
:%w %.alt
:vert diffsplit %.alt
Y luego happiliy reorganizar la versión 'alt' de manera que los bits seudo-juego quedan alineados.
Tenga en cuenta que (presumiblemente) contiene git merge/diff vaca-poderes spiffy que deberían ser capaces de detectar sub-archivo se trasladó cambia bloque.
Aunque todavía no he puesto esto en práctica, tengo la corazonada de que el muy buen plugin git fugitive
para vim podría aprovechar algunos de estos caballos de fuerza para hacer esto más fácil. Nota: totalmente de esperar que esto requiere scriptinh antes de ser utilizable, pero yo todavía pensaba que sería bueno compartir esta idea
Como alternativa (quizás puede compartir una secuencia de comandos si se llega a él primero!) La solución que he estado usando ocasionalmente y que funciona muy bien en mi opinión es linediff.vim.
Le permite usar el modo visual para seleccionar dos cuerpos de texto de búferes arbitrarios (o lo mismo para ese caso) y ejecutar vimdiff en ellos. Lo mejor de todo es que, al editar y guardar los búfers de diff temporales, actualiza los búferes originales con los cambios, sin guardarlos.
Uno de mis casos de uso es cuando estoy resolviendo problemas de fusión relacionados con la refacturación y el reordenamiento de scripts, donde una función se ha movido y quizás también se ha modificado. Para asegurarte de que no pierdes ninguna de las modificaciones que vienen de ninguno de los dos antecesores, difieres las dos versiones de la función solo al seleccionarlas visualmente y ejecutar el comando alineado.
- 1. ventanas en Vim
- 2. Número de ventanas en VIM
- 3. Cómo voltear ventanas en vim?
- 4. VIM: buscar en múltiples split ventanas
- 5. "Minimizar" divisiones verticales de ventanas VIM
- 6. Vim: Cambiar ventanas gráficas rápidamente en modo normal
- 7. atajo de hacer ventanas/paneles vim iguales en altura
- 8. vim - deshacer en todos los tampones/ventanas/abrir archivos etc
- 9. ¿Cómo puedo dividir horizontalmente varias ventanas divididas verticalmente en Vim?
- 10. Vim: hay un comando para cambiar las ventanas
- 11. vim: configuración de línea de estado diferente para ventanas divididas
- 12. Cancelar ventana dividida en Vim
- 13. Vim como una plataforma para tomar notas: salta a la etiqueta en ventanas divididas verticalmente
- 14. Cerrar todas las ventanas (pantallas divididas) en Vim a la vez
- 15. Cerrar una ventana dividida en Vim sin cambiar el tamaño de otras ventanas
- 16. ventanas Javascript
- 17. ¿Cómo se vuelven a cargar todas las ventanas vim a la vez?
- 18. memoria cheque fugas en ventanas
- 19. Varias ventanas en Visual Studio
- 20. CollectionViewSource en aplicación ventanas metro
- 21. ventanas SlimDX en WPF controla
- 22. fnmatch para ventanas en C?
- 23. Detección de dimensiones de ventanas divididas
- 24. Desplazar la otra ventana en VIM Split
- 25. Cómo actualizar el taglist en vim?
- 26. Especificando el ancho para: vsplit en vim
- 27. ¿Cómo prefiere cambiar entre buffers en Vim?
- 28. consolidando archivos vim en la carpeta ~/.vim
- 29. Control de ventanas OSX
- 30. MVC-ventanas emergentes
De acuerdo, usar% para referirme al nombre del archivo del búfer actual es bueno, ¡no estaba al tanto de eso! Pero todavía no estoy seguro de cómo reorganizar la versión derecha para que los bits coincidentes se alineen. : se noscrollbind parece ayudar, pero ¿cómo puedo obtener vim para resaltar las diferencias entre las dos ventanas? – ChrisDR
Me refiero a reordenar literalmente (uso C/C#, entonces 'd2] M' elimina dos métodos, navega al punto de inserción,' P' y voila); Además, la 'versión alternativa derecha' era un error tipográfico para 'versión alternativa'. Sé que esto todavía es trabajo manual, pero (aparte de la idea de usar la detección de copiar/mover de Git) no conozco una mejor manera. El truco para usar una copia temporal es bastante prolijo. – sehe