Como uso o vim como uma ferramenta diff?
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).
você deve tentar o vim-fugitive, ele adiciona os comandos :Gdiffe os :Gvdiffdois 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 arquivos
— rbernabe
Eu tenho essa função simples no meu bashrc vd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; }e a invoco com vd file1 file2. Ele é usado diffpara determinar se os arquivos diferem e só é aberto vimdiffse 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.
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á foldedausente, 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 vimdiffque 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).
Também lida com até 4 buffers, tornando-a excelente para comparar arquivos de configuração
Você também pode usar o :diffthiscomando para iniciar um diff quando o Vim já estiver em execução.
E: diffoff para desativá-lo. Eu acho que um link para a documentação do vim seria benéfico: vimdoc.sourceforge.net/htmldoc/diff.html
— Cody Poll
Para mim, mesmo depois git config --global diff.tool vimdiff, git diffainda mostra tudo como se eu não mudasse nada.
tentegit 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":
— irmão-bilo
Para evitar a alternância entre os buffers que você pode usar :windo diffthistambém
Você pode colocar a configuração mencionada abaixo no .gitconfigarquivo 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.
A seguir está minha configuração do git:
— tracyone
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
abra uma janela com o primeiro arquivo (ou o conteúdo do texto, se você estiver colando dados)
abra o próximo arquivo / janela usando :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
use F8 para alternar uma função personalizada que ativa e desativa o modo diff
aqui está a função personalizada que está no meu ~/.vimrc:
você pode usar o comando :diffthise diffoff!assim não precisa definir todas as opções de diferenças (por exemplo, cursorbind também é definido por diffmode)