Comparando dois arquivos no Vim

63

É possível visualizar dois arquivos lado a lado no Vim? Em caso afirmativo, como posso configurar meu editor para fazer isso e existe uma maneira de alternar diffentre os dois arquivos no Vim?

Estou ciente dos comandos :nexte :prev, mas não é isso que estou procurando. Seria realmente bom ver os dois arquivos em conjunto.

Zaid
fonte

Respostas:

43

Abra a vista lado a lado:

Ctrl+w v

Mudar entre eles:

Ctrl+w h or l

Faça o checkout do comando vimdiff , parte do pacote vim, se você quiser uma visão semelhante a diff:

vimdiff file1.txt file2.txt
maxschlepzig
fonte
2
Existe uma maneira de bloquear a rolagem entre as duas janelas?
Zaid
11
Sim, confira vimdoc.sourceforge.net/htmldoc/options.html#%27scrollbind%27 - com vimdiff, é o padrão.
maxschlepzig
11
Eu costumo usar "diff file1 file2" na linha de comando.
djangofan
2
@Zaid Use vimdiff file1.txt file2.txt(veja abaixo)
Eduardo Cuomo
42

Você também pode abrir o vim no modo de tela dividida, com a -Oopção: -

vim -O file1 [file2 ...]

Para ativar o modo diff, você precisa executar o :diffthiscomando em cada painel.

Outro cenário de caso de uso é se você já tem um arquivo aberto no vim e deseja abrir e compará-lo com outro. Em seguida, você pode usar os seguintes comandos do 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)

Você pode desativar o modo diff em cada painel com o comando vim :diffoff.

EDIT
E o outro padrão que não foi mencionado: -

vim -d file1 [file2 ...]

Isso é equivalente a ligar vimdiffdiretamente.

Alex Leach
fonte
11
:windo :diffthispode ser usado em vez dos três últimos comandos.
Bernhard
2

Ou simplesmente abra o primeiro arquivo no VIM e :vert diffsplit file2 :vertdivida a tela na vertical.

diffsplit faz um diff e divide os arquivos e rola os bloqueios.

Dustin
fonte