tool - ¿Obligando a Vimdiff a envolver líneas?
vim diff tool (5)
Al diferenciar 2 archivos en VIM, prefiero que las líneas se ajusten. Sin embargo, vimdiff desactiva el ajuste por defecto.
¿Hay una manera de establecer el ajuste de línea automáticamente para cada dif?
Cuando vim ya está iniciado, los comandos para iniciar un diff y una envoltura son, en cada uno de los archivos de ventana dividida:
:diffthis
:set wrap
Sin embargo, el diff + wrap se muestra incorrectamente:
Si tiene una línea larga en un archivo y una línea corta o faltante en la otra, entonces la línea larga ocupará, digamos, 2 líneas en el primer lado, por la línea corta o faltante solo ocupará 1 línea en el segundo lado.
Esto resulta en un cambio vertical de los 2 archivos . Claro, los colores ayudan a compensar visualmente este cambio. Pero a lo largo de varias líneas de diferencias, el cambio puede ser más alto que la altura de la ventana, haciendo que las diferencias sean ilegibles.
Así que la pregunta no está completamente resuelta ... Por favor avise.
Puedes ejecutar esto
vimdiff -c ''set wrap'' -c ''wincmd w'' -c ''set wrap'' file1 file2
Puedes poner lo siguiente en tu vimrc.
au VimEnter * if &diff | execute ''windo set wrap'' | endif
Tuve que resolver esta pregunta para una demostración en la que quería que vimdiff
solo cuando se lanzaba desde un determinado terminal.
Finalmente recurrí al crudo:
alias vimdiff=''vimdiff +"windo set wrap"''
vimdiff file.orig file
Yo uso lo siguiente:
autocmd FilterWritePre * if &diff | setlocal wrap< | endif
FilterWritePre
se activa inmediatamente antes de escribir un diff generado en el búfer y setlocal wrap<
copia el valor global de wrap
. Por supuesto, también es posible forzar simplemente el setlocal wrap
.