Eu uso o vim como meu editor principal.
Eu também gostaria de usar o vim para diferenciar arquivos e modificá-los ao fazer o diff para corrigir alterações fáceis (em vez da maioria das técnicas diff, que são um ciclo de diff / fix / diff / fix).
Além disso, existem maneiras fáceis de integrar o vim nas ferramentas diff usadas pelas ferramentas / sites de controle de origem (estou pensando especificamente no git, mas tenho certeza de que outras pessoas estariam interessadas na integração com outras ferramentas / sites de controle de origem).
:Gdiff
e os:Gvdiff
dois comandos permitem ver a diferença lado a lado do buffer atual, se o buffer atual for gerenciado pelo git. Também heps-lo a resolver conflitos em um layout de três janela quando você tem conflitos de mesclagem em alguns arquivosvd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; }
e a invoco comvd file1 file2
. Ele é usadodiff
para determinar se os arquivos diferem e só é abertovimdiff
se for o caso. Caso contrário, eu fico na concha. Também desabilito o realce de sintaxe no Vim porque acho que é perturbador ao diferir. Funciona apenas com dois arquivos.Respostas:
O vim possui essa funcionalidade incorporada (com o sinalizador de linha de comando correto).
Isso abre cada arquivo em uma exibição e destaca as diferenças.
Qualquer código idêntico está
folded
ausente, portanto, você não precisa procurar um código idêntico ou rolar por enormes pedaços de código idêntico.Mas há também um aplicativo wrapper
vimdiff
que chama corretamente o vim com os sinalizadores corretos.Se você estiver usando o git, poderá configurar uma ferramenta de comparação externa. Portanto, é fácil configurar o vimdiff para ser a ferramenta diff do git.
Ao usar o vimdiff, você pode editar os lados e o destaque do diff mantém o ritmo para mostrar as diferenças.
Nota: Ao editar a partir de um diff git. Se você tentar editar a versão armazenada do repositório do arquivo, suas alterações serão descartadas quando você sair (o git não confia em você com o original, portanto, você está diferente de uma cópia tmp), mas pode editar a cópia local para o conteúdo do seu coração e salve-o sobre sua versão atual.
Alguns comandos básicos que são úteis em
vimdiff
Outras configurações do vim que eu uso para trabalhar com destaque com o vimdiff
Isso desativa o destaque nos bits de código que são alterados. Portanto, a linha que é alterada é destacada para que eu possa identificar as alterações, mas o texto real que foi alterado se destaca na linha (pois não é realçado).
fonte
:diffthis
comando para iniciar um diff quando o Vim já estiver em execução.git config --global diff.tool vimdiff
,git diff
ainda mostra tudo como se eu não mudasse nada.git difftool
Se você estiver editando um arquivo aberto e quiser compará-lo com outro arquivo sem fechar o atual:
Abra o novo arquivo em tela dividida:
Para divisão vertical:
ou divisão horizontal:
Alterne os cursores para diferentes telas divididas:
Invoque o "modo diff" no arquivo:
Alterne para outro arquivo e chame o "modo diff":
Para desativar o "modo diff":
fonte
:windo diffthis
tambémVocê pode colocar a configuração mencionada abaixo no
.gitconfig
arquivo encontrado no diretório%homepath%
(ou%userprofile%
) do usuário conectado no momento:Isso permitirá que a ferramenta git bash comece a usar o vimdiff como a ferramenta diff externa também.
fonte
A seguir está minha configuração do git:
https://github.com/tracyone/dotfiles/blob/master/.gitconfig
fonte
Eu posso ver apenas três situações para usar o vim como um difftool. Eles são brevemente descritos abaixo:
Para o git difftool, coloque o seguinte em
~/.gitconfig
:Para abrir o vim como uma ferramenta diff para dois arquivos, você pode fazer o seguinte:
Para obter uma visualização diferencial dos buffers atualmente ativos, ou seja, todos os buffers que possuem uma janela atribuída a eles na ficha de registro ativa no momento, você pode fazer o seguinte:
Para mais informações, veja
:h diff
fonte
aqui está o que eu faço:
:vnew
(para ter as duas janelas lado a lado) ou:new
(para ter as janelas em cima e em baixo). se você tiver um arquivo específico para abrir na segunda janela, poderá incluir o caminho como este::vnew /path/to/secondfile.txt
aqui está a função personalizada que está no meu
~/.vimrc
:fonte
:diffthis
ediffoff!
assim não precisa definir todas as opções de diferenças (por exemplo, cursorbind também é definido por diffmode)