Comparando o conteúdo de dois arquivos no Sublime Text


397

Eu tenho dois repositórios clonados de dois projetos de código aberto muito semelhantes, nos quais tenho trabalhado em diferentes instâncias no Sublime Text 2 para chegar ao resultado desejado. O código de ambos os projetos foi usado. Eu tenho usado o Git como controle de versão para o meu projeto, mas não incluí os projetos originais. Assim, eu gostaria de poder comparar rapidamente o conteúdo de dois arquivos do projeto original e comparar as diferenças entre eles e o meu projeto.

Eu esperava que o Sublime Text 2 tivesse um recurso "Comparar arquivo", mas não consigo encontrar nada relacionado a ele nas configurações ou online. Um pacote ST2 de terceiros para realizar essa tarefa também funcionaria bem. É possível executar essa tarefa no editor de texto ST2?

Respostas:


705

Você pode comparar arquivos nativamente diretamente no Sublime Text.

  1. Navegue até a pasta que os contém por meio de Open Folder...ou em um projeto
  2. Selecione os dois arquivos (ou seja, mantendo Ctrlno Windows ou no macOS) que você deseja comparar na barra lateral
  3. Clique com o botão direito e selecione a Diff files...opção.


19
@Derek: usando select capaz de selecionar, mas não consegue encontrar a opção de arquivo diff no botão direito, só tem a opção fechar no botão direito.
Mohamed Hussain

66
@MohamedHussain Na verdade, existem duas barras laterais diferentes e você precisa estar na correta para que isso funcione. Se você for em Arquivo> Abrir Pasta ..., selecione a pasta em que seus arquivos estão e selecione Exibir> Barra Lateral> Mostrar Barra Lateral, você terá a que precisa. Você obtém o outro selecionando Exibir> Barra lateral> Mostrar arquivos abertos, mas este não permitirá que você use a opção Diff Files ....
precisa

25
Infelizmente, isso não parece mais funcionar no sublime build 3103 no mac. Assim que eu clique direito no segundo arquivo é desmarcada,
merlin

8
Não está funcionando para mim no Build 3144 no OSX. Posso selecionar dois arquivos na interface do arquivo, mas quando clico com a tecla Ctrl pressionada, apenas um é selecionado e a opção diff não existe.
James J

4
Não funciona para mim também em 3114 - windows. Não há opção diff quando clico com o botão direito do mouse nos arquivos.
dangsonbk 12/09

216

Comparar lado a lado parece o mais conveniente para mim, embora não seja o mais popular:

UPD: Preciso acrescentar que este plugin pode congelar o ST ao comparar arquivos grandes. Certamente não é a melhor decisão se você deseja comparar textos grandes.


11
Esta é a solução IMO mais fácil e conveniente. Funciona bem no ST3
mihai

5
Funciona bem e pode comparar arquivos de diferentes locais que não consegui fazer com a comparação nativa.
24316 Leo

3
Isso também funciona com o conteúdo copiado e colado em novas guias não salvas, o que é útil em uma pitada.
Mtone

11
Eu gostaria de ter visto isso antes, teria me salvado um dia improdutivo.
0_o

11
Comparar o Side-By-Side me ajudou.
Noob

61

Há vários plugins diff disponíveis no Package Control. Eu usei o Sublimerge Pro , que funcionou bem o suficiente, mas é um produto comercial (com um período de teste ilimitado) e de código fechado, para que você não possa ajustá-lo se quiser mudar alguma coisa ou apenas olhar para os internos. O FileDiffs é bastante popular, a julgar pelo número de instalações, então você pode tentar fazer isso.


2
Agora estou usando o FileDiffs e funciona como um encanto. Obrigado, resposta aceita.
LanceLafontaine

11
Bem, eu não consigo descobrir como usar o FileDiffs. Você pode descrever em breve como eu posso comparar dois arquivos com ele.
21415 Jamil Ahmed

4
@LanceLafontaine Normalmente, eu não faria isso, mas você se importaria de mudar a resposta aceita para a resposta de Derek below 會 功夫 abaixo? Nenhum de nós realmente precisa dos pontos, mas eu não sabia que havia uma diferença embutida na época. Agora eu uso o tempo todo no Sublime. O único momento em que não preciso é quando preciso dos recursos estendidos de uma ferramenta externa.
27416 MattDMo

Qual desses plugins é capaz de detectar o movimento de blocos inteiros de texto? E não apenas diga que algumas linhas estão faltando aqui e aparecem lá, mas também mostre com setas como elas se moveram?
skan

Graças a esta resposta, instalei o FileDiffs e adicionei o commad para usar o TortoiseMerge.exe para comparação. Foi uma grande melhoria para o meu uso diário da comparação sublime de códigos. Obrigado!
lyubeto

48

UPDATE
(Dadas as votações anteriores, sinto que é necessária uma explicação passo a passo completa ...)

  1. Na barra de menus, clique em File->Open Folder...
  2. Selecione uma pasta (a pasta real realmente não importa, esta etapa é apenas para disponibilizar a FOLDERSbarra lateral)
  3. Se ainda não houver Barra Lateral, faça-a aparecer através de View-> Side Bar->Show Side Bar
  4. Use esta FOLDERSbarra lateral com o título para navegar para o primeiro arquivo que você deseja comparar.
  5. Selecione-o (clique nele), mantenha pressionada a tecla Ctrl e selecione o segundo arquivo.
  6. Tendo dois arquivos selecionados, clique com o botão direito do mouse em um dos dois e selecione Diff Files...

Agora deve haver uma nova guia mostrando a comparação.


Resposta curta original:
observe que:

Os "Arquivos Diff" aparecem apenas com a barra lateral "pastas" (para abrir uma pasta: Arquivo-> Abrir Pasta), não com a barra lateral "arquivos abertos".


Existe uma maneira de selecionar essas linhas diferentes? Um aparece em vermelho e o outro em verde
Zeristor

11
O que você quer dizer com selecionar? Destaque-os e, por exemplo, copie-os? Ou extraí-los? Obrigado pelo esclarecimento!
langlauf.io

Como as linhas ausentes são prefixadas com '-', selecionei uma e correspondi a todas, selecionei a linha completa e copiei. Uma maneira construída seria apenas mais leve para esquecer.
Zeristor

5
Acho que vale a pena explicar que os dois arquivos não podem ser abertos com dificuldade. Se você clicou duas vezes nos dois para que ambos sejam abertos, não será possível destacar os dois arquivos na barra lateral usando o botão ctrl. Você precisa garantir que um deles esteja fechado antes de selecionar os dois arquivos. Descobri isso porque eu já tinha dois arquivos abrir e queria usar diff arquivos ...
Battousai

11
@NaveenDA Eu adaptei minha resposta para poder remover o link quebrado. Obrigado pela dica!
langlauf.io

25

ATUALIZAÇÃO JAN 2018 - especialmente para Sublime / Mac

(Isso é muito semelhante à resposta de Marty F., mas aborda alguns problemas das respostas anteriores, combina várias sugestões diferentes e discute a distinção crítica que me causou problemas a princípio.)

Estou usando o Sublime Text 3 (build 3143) no Mac e estou tentando há cerca de 30 minutos encontrar esse recurso de comparação de arquivos. Eu já o havia usado no Sublime / Mac sem problemas, mas desta vez foi mais complicado. Mas finalmente entendi.

  1. O formato do arquivo não precisa ser UTF-8 . Comparei com êxito os arquivos UTF-8, ISO-8559-1 e Windows-1252.

  2. Não há Arquivo> Abrir pastas no Sublime / Mac . Muitas instruções acima começam em "Selecionar arquivo> Abrir pastas", mas isso não existe no Sublime / Mac.

  3. A comparação de arquivos funciona em uma base de projeto . Se você deseja comparar dois arquivos, eles devem ser salvos no disco e parte do projeto atual.

  4. Maneiras de abrir um projeto

    • Se o Sublime / Mac não estiver em execução ou se estiver em execução, mas nenhuma janela estiver aberta, arraste uma pasta para o aplicativo Sublime.
    • Se o Sublime / Mac estiver em execução, selecione "Arquivo> Abrir", navegue até a pasta desejada, não selecione um arquivo ou pasta e clique em "Abrir".
  5. Adicione uma pasta a um projeto . Se os arquivos que você deseja comparar não fizerem parte da mesma hierarquia, primeiro abra a pasta que contém um dos arquivos. Em seguida, selecione "Projeto> Adicionar pasta ao projeto", navegue até a pasta desejada e clique em "Abrir". Agora você verá duas pastas no nível raiz na barra lateral.

  6. A barra lateral deve estar visível . Você pode "Exibir> Barra lateral> Mostrar barra lateral" ou usar o atalho Command-K, Command-B.

  7. Os arquivos devem ser fechados (salvos) para serem comparados . Clicar uma vez em um arquivo na Barra Lateral não abre o arquivo, mas o exibe. Você pode saber se um arquivo está aberto, se estiver listado na seção "Abrir arquivos", na parte superior da barra lateral. Clicar duas vezes em um arquivo ou fazer uma modificação em um arquivo alterará automaticamente o status de um arquivo para "Abrir". Nesse caso, feche-o antes de tentar comparar.

  8. Selecione arquivos da hierarquia de pastas . Atalho padrão do Mac aqui, ( único ) clique no primeiro arquivo e clique com a tecla Command pressionada no segundo arquivo. Ao selecionar o primeiro arquivo, você verá seu conteúdo, mas ele não está aberto. Então, quando você clica com a tecla Command pressionada no segundo arquivo, verá o conteúdo, mas, novamente, nenhum dos dois está aberto. Você notará apenas uma guia no painel de edição.

  9. Control-clique não é o mesmo que clicar com o botão direito . Este foi o que me pegou. Uso meu trackpad e geralmente recorro ao Control-clique como clique com o botão direito do mouse ou com o botão secundário. Isso não funciona para mim. No entanto, desde que configurei meu trackpad nas Preferências do Sistema para usar o canto inferior direito do trackpad como um clique com o botão direito do mouse, que funcionou, exibindo o menu contextual com "Excluir", "Revelar no Finder" e .... "Arquivos Diff ..."

Voilà! Espero que isso ajude alguém.


2
É possível comparar uma pasta em vez de comparar um arquivo?
DCBoy

11
caramba! você acabou de salvar os usuários do mac!
Analyst045

10

ATUALIZAÇÃO OUTUBRO 2017 Eu nunca soube que esse recurso existia no Sublime Text, mas a interface parece ter mudado um pouco em relação à resposta anterior - pelo menos no OS X. Aqui estão as etapas detalhadas que segui:

  1. Na barra de menus, clique em Arquivo -> Abrir ...
  2. Navegue até a PASTA que contém os arquivos a serem comparados e, com a PASTA selecionada, clique no botão Abrir, para que a barra lateral das PASTA apareça
  3. Na barra lateral FOLDERS, clique no primeiro arquivo a ser comparado
  4. Mantenha pressionada a tecla Ctrl no Windows ou ⌘ no OS X e clique no segundo arquivo
  5. Com os dois arquivos selecionados, clique com o botão direito do mouse em um e selecione Diff Files ...

Isso abre uma nova guia mostrando a comparação. O primeiro arquivo em vermelho, o segundo em verde.


8

View - Layout e View - Groups farão o mais recente Sublime 3

por exemplo:

Shift+ Alt+ 2-> cria 2 colunas

Ctrl+ 2-> move o arquivo selecionado para a coluna 2

Isto é para comparação lado a lado. Para diff real, existe a função diff, já mencionada. Infelizmente, não consigo encontrar uma maneira de fazer a rolagem das colunas ao mesmo tempo, o que seria um bom recurso.


11
E para fechar um grupo, você pode usar Ctrl+ K Ctrl+down
Alex Raj Kaliamoorthy 15/05/19

2

Ninguém está falando sobre Linux, mas todas as respostas acima funcionarão. Basta usar Ctrl para selecionar mais de um arquivo. Se você deseja comparar lado a lado, Meld é adorável.


2

A opção Diff aparece apenas se os arquivos estiverem em uma pasta que faz parte de um projeto.

Na verdade, você pode comparar arquivos nativamente diretamente no Sublime Text.

Navegue até a pasta que os contém através de Abrir pasta ... ou em um projeto Selecione os dois arquivos (ou seja, mantendo Ctrl no Windows ou ⌘ no macOS) que você deseja comparar na barra lateral Clique com o botão direito do mouse e selecione os arquivos Diff ... opção.


0

Também existe um plug-in BeyondCompare. Abre os 2 arquivos em uma BeyondComparejanela. Bastante conveniente para abrir arquivos a partir da janela sublime.

Você precisará da instalação do BC3 presente no sistema. Depois de instalar o plugin , você precisará fornecer o caminho para a instalação.

Exemplo:

{
    //Define a custom path to beyond compare
    "beyond_compare_path": "G:/Softwares/Beyond Compare 3/BCompare.exe"
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.