Yo uso vim como mi editor principal.
También me gustaría usar vim para archivos diff y modificar los archivos mientras hago el diff para corregir cambios fáciles (en lugar de la mayoría de las técnicas diff que son un ciclo de diff / fix / diff / fix).
Además, existen formas fáciles de integrar vim en las herramientas diff utilizadas por las herramientas / sitios de control de código fuente (estoy pensando específicamente en git pero estoy seguro de que otras personas estarían interesadas en integrarse con otras herramientas / sitios de control de código fuente).
:Gdiff
y:Gvdiff
ambos comandos te permiten ver la diferencia lado a lado del búfer actual si tu git actual maneja tu búfer actual. También le ayuda a resolver conflictos en un diseño de tres ventanas cuando tiene conflictos de fusión en algunos archivosvd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; }
y la invoco convd file1 file2
. Se utilizadiff
para determinar si los archivos difieren y solo se abrevimdiff
si es así. De lo contrario, me quedo en la cáscara. También deshabilito el resaltado de sintaxis en Vim porque me parece que distrae cuando difiero. Solo funciona con dos archivos.Respuestas:
vim tiene esta funcionalidad incorporada (con el indicador de línea de comando correcto).
Esto abre cada archivo en una vista y resalta las diferencias.
Cualquier código que sea idéntico está
folded
ausente, por lo que no necesita mirar código idéntico o desplazarse a través de enormes fragmentos de código idéntico.Pero también hay una aplicación de contenedor
vimdiff
que invoca correctamente vim con los indicadores correctos.Si está utilizando git, puede configurar una herramienta de diferencia externa. Por lo tanto, es fácil configurar vimdiff para que sea la herramienta diff de git.
Al usar vimdiff, puede editar cualquier lado y el resaltado de diferencias mantiene el ritmo para mostrarle las diferencias.
Nota: Al editar desde un git diff. Si intenta editar la versión almacenada del repositorio del archivo, sus cambios se descartarán cuando salga (git no le confía el original, por lo que difiere de una copia tmp), pero puede editar la copia local al contenido de su corazón y guárdelo sobre su versión actual.
Algunos comandos básicos que son útiles en
vimdiff
Otras configuraciones de vim que uso para trabajar resaltando con vimdiff
Esto desactiva el resaltado de los bits de código que se cambian. Entonces, la línea que se cambia se resalta para que pueda detectar los cambios, pero el texto real que ha cambiado se destaca en la línea (ya que no está resaltado).
fuente
:diffthis
comando para iniciar un diff cuando Vim ya se está ejecutando.git config --global diff.tool vimdiff
,git diff
todavía muestra todo como si no cambiara nada.git difftool
Si está editando un archivo abierto y desea compararlo con otro archivo sin cerrar el actual:
Abra el nuevo archivo en pantalla dividida:
Para división vertical:
o división horizontal:
Cambia los cursores a diferentes pantallas divididas:
Invoque el "modo diff" en el archivo:
Cambie a otro archivo e invoque el "modo diff":
Para desactivar el "modo diff":
fuente
:windo diffthis
tambiénPuede colocar la configuración mencionada a continuación en el
.gitconfig
archivo que se encuentra en el directorio%homepath%
(o%userprofile%
) del usuario actualmente conectado:Esto permitirá que la herramienta git bash comience a usar vimdiff como la herramienta de diferencia externa también.
fuente
Lo siguiente es mi configuración de git:
https://github.com/tracyone/dotfiles/blob/master/.gitconfig
fuente
Solo puedo ver tres situaciones para usar vim como herramienta de difusión. Se describen brevemente a continuación:
Para git difftool, ponga lo siguiente en su
~/.gitconfig
:Para abrir vim como una herramienta de diferencias para dos archivos, puede hacer lo siguiente:
Para obtener una vista diferencial de los buffers que están activos actualmente, es decir, todos los buffers que tienen una ventana asignada en la pestaña activa actualmente, puede hacer lo siguiente:
Para más información, ver
:h diff
fuente
esto es lo que hago:
:vnew
(para tener ambas ventanas una al lado de la otra) o:new
(para tener las ventanas arriba y abajo). Si tiene un archivo específico para abrir en la segunda ventana, puede incluir la ruta de esta manera::vnew /path/to/secondfile.txt
Aquí está la función personalizada que está en mi
~/.vimrc
:fuente
:diffthis
y,diffoff!
por lo tanto, no tiene que establecer todas las opciones de diferencias usted mismo (p. ej., la combinación de cursores también se establece mediante diffmode)