Comparar dos archivos en Vim

63

¿Es posible ver dos archivos uno al lado del otro en Vim? Si es así, ¿cómo puedo configurar mi editor para hacer esto? ¿Hay alguna forma de diffseparar los dos archivos dentro de Vim?

Soy consciente de los comandos :nexty :prev, pero esto no es lo que busco. Sería realmente bueno ver los dos archivos en conjunto.

Zaid
fuente

Respuestas:

43

Abra la vista de lado a lado:

Ctrl+w v

Cambiar entre ellos:

Ctrl+w h or l

Partida de los vimdiff comando, parte del paquete vim, si quieres una vista similar a diff:

vimdiff file1.txt file2.txt
maxschlepzig
fuente
2
¿Hay alguna manera de bloquear el desplazamiento entre las dos ventanas?
Zaid
1
Sí, consulte vimdoc.sourceforge.net/htmldoc/options.html#%27scrollbind%27 - con vimdiff es el valor predeterminado.
maxschlepzig
1
Usualmente uso "diff file1 file2" en la línea de comando.
djangofan
2
@Zaid Use vimdiff file1.txt file2.txt(ver abajo)
Eduardo Cuomo
42

También puede abrir vim en modo de pantalla dividida, con la -Oopción: -

vim -O file1 [file2 ...]

Para activar el modo diff, debe ejecutar el :diffthiscomando en cada panel.

Otro escenario de caso de uso es si ya tiene un archivo abierto en vim y desea abrirlo y compararlo con otro. Luego puede usar los siguientes comandos vim: -

:vs otherfile (open otherfile in vertical split screen)
:diffthis (turn on diff mode in original file)
Ctrl+w l  (swap to newly opened file)
:diffthis (turn on diff mode in opened file)

Luego puede desactivar el modo diff en cada panel con el comando vim :diffoff.

EDITAR
Y el otro estándar que no se ha mencionado: -

vim -d file1 [file2 ...]

Esto es equivalente a llamar vimdiffdirectamente.

Alex Leach
fuente
11
:windo :diffthisse puede usar en lugar de los últimos tres comandos.
Bernhard
2

O simplemente abra el primer archivo en VIM, luego :vert diffsplit file2 :verthaga que divida la pantalla verticalmente.

diffsplit hace un diff, divide los archivos y los desplaza para bloquearlos.

Dustin
fuente