Refiriéndose a tareas de limpieza como (pero no limitado a) las detalladas en estas preguntas:
¿Hay alguna manera de aplicar esos comandos solo a las líneas de los archivos que realmente se modificaron? Esto es para mantener el resultado diferencial centrado en el cambio real después de editar el código fuente (un posible revisor de código no se confundiría con los cambios involucrados en la limpieza de todo el archivo), sin introducir nuevos problemas de formato.
:changes
no funciona sin mucha piratería; ya que parece que esta información se almacena en el archivo viminfo, y no hay forma de ver qué cambios realizó en esta sesión y cuál la anterior ... A menos que desactive el archivo viminfo, por supuesto, pero eso es bastante pesado ... Sin embargo, me gustaría que se demuestre lo contrario aquí :-)Respuestas:
Puede usar el comando
folddoopen
para ejecutar un comando solo en las líneas que no están dentro de un pliegue cerrado.Por ejemplo, puede eliminar espacios en blanco del final de las líneas con el comando:
Para aplicar esto solo a las líneas que actualmente no están dentro de un pliegue cerrado, agregue
folddopen
, así:folddoopen
también se puede abreviar afoldd
.Si está utilizando Vim como la herramienta de diferencias de su control de origen, puede usar esto para aplicar ediciones solo a las líneas cambiadas mientras visualiza la diferencia.
Tenga en cuenta que, por defecto, el modo diff de Vim muestra algunas líneas antes y después de cada sección modificada. Así que con el fin de no afectar a las líneas que son inmediatamente antes o después de líneas cambiadas que necesitará para primer conjunto
context
endiffopt
que0
por ejemplo:Para las ediciones manuales, también puede encontrar la
foldopen
opción útil. Define qué tipos de comandos harán que se abran los pliegues. Aunque tenga en cuenta que no impide que la edición tenga lugar dentro de los pliegues de la manera en que lo hace elfolddoopen
comando.(Si quiere decir algo más por "las líneas de los archivos que realmente se modificaron", entonces tendrá que encontrar una forma de plegar las líneas sin cambios antes de ejecutar el comando: la forma más fácil es mantener una copia sin cambios del archivo y use vimdiff manualmente.)
fuente
:folddoopen
, parece un comando muy útil. También quería ofrecer que si usa fugitive.vim , puede ver más fácilmente la diferencia de su búfer actual con el:Gdiff
comando.:vsp new
, luego:read !git show HEAD~1:path
y finalmente:windo diffthis
(y luego usando su solución).