Porównywanie zawartości dwóch plików w Sublime Text

397

Mam dwa sklonowane repozytoria dwóch bardzo podobnych projektów open source, nad którymi pracowałem w różnych przypadkach w Sublime Text 2, aby osiągnąć pożądany rezultat. Zastosowano kod z obu tych projektów. Używam Git jako kontroli wersji dla mojego projektu, ale nie uwzględniłem oryginalnych projektów. Dlatego chciałbym móc szybko porównać zawartość dwóch plików oryginalnego projektu i porównać różnice między nimi a moim projektem.

Miałem nadzieję, że Sublime Text 2 będzie miał funkcję „Porównaj plik”, ale nie mogę znaleźć niczego związanego z tym w ustawieniach lub w Internecie. Dobrze działałby również pakiet ST2 innej firmy do wykonania tego zadania. Czy takie zadanie jest możliwe do wykonania w edytorze tekstu ST2?

LanceLafontaine
źródło

Odpowiedzi:

705

Możesz faktycznie porównywać pliki bezpośrednio w Sublime Text.

  1. Przejdź do folderu zawierającego je poprzez Open Folder...lub w projekcie
  2. Wybierz dwa pliki (tj. Trzymając CtrlWindows lub MacOS), które chcesz porównać na pasku bocznym
  3. Kliknij prawym przyciskiem myszy i wybierz Diff files...opcję.

Derek 朕 會 功夫
źródło
19
@Derek: używając select można wybrać, ale nie można znaleźć opcji pliku różnicowego po kliknięciu prawym przyciskiem, dostałem tylko opcję zamknięcia po kliknięciu prawym przyciskiem myszy.
Mohamed Hussain
65
@MohamedHussain Istnieją naprawdę dwa różne paski boczne i musisz być w odpowiednim, aby to zadziałało. Jeśli przejdziesz do Plik> Otwórz folder ..., wybierz folder, w którym znajdują się pliki, a następnie wybierz Widok> Pasek boczny> Pokaż pasek boczny, otrzymasz ten, którego potrzebujesz. Możesz uzyskać drugi, wybierając Widok> Pasek boczny> Pokaż otwarte pliki, ale ten nie pozwoli ci użyć opcji Różnicuj pliki ...
Jeramy
25
To niestety już nie działa w wysublimowanej wersji 3103 na Macu. Gdy tylko kliknę prawym przyciskiem myszy drugi plik zostanie odznaczony,
merlin,
8
Nie działa dla mnie w kompilacji 3144 na OSX. Mogę wybrać dwa pliki w interfejsie plików, ale kiedy klikam z wciśniętym klawiszem Ctrl, tylko jeden zostaje wybrany i nie ma opcji diff.
James J
4
Nie działa również dla mnie w 3114 - Windows. Po kliknięciu plików prawym przyciskiem myszy nie ma opcji różnicowania.
dangsonbk
216

Porównaj Side-By-Side wydaje mi się najwygodniejszy dla mnie, choć nie jest najpopularniejszy:

UPD: Muszę dodać, że ta wtyczka może zamrozić ST podczas porównywania dużych plików. Z pewnością nie jest to najlepsza decyzja, jeśli zamierzasz porównywać duże teksty.

Dany
źródło
11
jest to najłatwiejsze i najwygodniejsze rozwiązanie IMO. Działa dobrze w ST3
mihai
5
Działa dobrze i może porównywać pliki z różnych lokalizacji, których nie udało mi się zrobić z porównaniem natywnym.
Leo
3
Działa to również z kopiowaniem wklejonych treści w nowych niezapisanych kartach, co jest przydatne w mgnieniu oka.
mtone
1
Szkoda, że ​​nie widziałem tego wcześniej, uratowałby mi bezproduktywny dzień.
0_o
1
Porównaj Side-By-Side właśnie mi pomogło.
noob
61

Istnieje wiele wtyczek różnicowych dostępnych za pośrednictwem Kontroli pakietów. Użyłem Sublimerge Pro , który działał wystarczająco dobrze, ale jest to produkt komercyjny (z nieograniczonym okresem próbnym) i zamkniętym źródłem, więc nie możesz go poprawiać, jeśli chcesz coś zmienić lub po prostu spojrzeć na jego elementy wewnętrzne. FileDiffs jest dość popularny, sądząc po liczbie instalacji, więc możesz spróbować go wypróbować.

MattDMo
źródło
2
Teraz używam FileDiffs i działa jak urok. Dziękuję, odpowiedź zaakceptowana.
LanceLafontaine
1
Nie mogę wymyślić, jak korzystać z FileDiffs. Czy możesz krótko opisać, w jaki sposób mogę porównać z nim dwa pliki.
Jamil Ahmed
4
@LanceLafontaine Normalnie nie zrobiłbym tego, ale czy miałbyś coś przeciwko zmianie zaakceptowanej odpowiedzi na odpowiedź Dereka below 會 功夫 poniżej? Żadne z nas tak naprawdę nie potrzebuje punktów, ale nie wiedziałem, że w tym czasie był wbudowany diff. Teraz używam go cały czas, gdy jestem w Sublime. Jedyne, czego nie robię, to kiedy potrzebuję rozszerzonych funkcji zewnętrznego narzędzia.
MattDMo
Która z tych wtyczek jest w stanie wykryć ruch całych bloków tekstu? I nie tylko powiedz, że brakuje niektórych linii i tam się pojawia, ale także pokaż strzałkami, jak się poruszają?
skan
Dzięki tej odpowiedzi zainstalowałem FileDiffs i dodałem commad, aby użyć TortoiseMerge.exe do porównania. To była ogromna poprawa w moim codziennym użyciu wysublimowanego porównywania kodów. Dzięki!
lyubeto
48

AKTUALIZACJA
(Biorąc pod uwagę opinie, uważam, że istnieje potrzeba pełnego wyjaśnienia krok po kroku ...)

  1. Na pasku menu kliknij File->Open Folder...
  2. Wybierz folder (rzeczywisty folder nie ma tak naprawdę znaczenia, ten krok ma na celu udostępnienie FOLDERSpaska bocznego)
  3. Jeśli nie pokazano jeszcze paska bocznego, wyświetl go za pomocą View-> Side Bar->Show Side Bar
  4. Użyj FOLDERSpaska bocznego z tym tytułem, aby przejść do pierwszego pliku, który chcesz porównać.
  5. Wybierz (kliknij), przytrzymaj klawisz Ctrl i wybierz drugi plik.
  6. Po wybraniu dwóch plików kliknij jeden z nich prawym przyciskiem myszy i wybierz Diff Files...

Powinna być teraz nowa karta pokazująca porównanie.


Oryginalna krótka odpowiedź:
Uwaga:

„Zróżnicowane pliki” pojawia się tylko z paskiem bocznym „foldery” (aby otworzyć folder: Plik-> Otwórz folder), a nie z paskiem bocznym „otwarte pliki”.

langlauf.io
źródło
Czy istnieje sposób na wybranie tych różnych linii? Jeden pojawia się na czerwono, a drugi na zielono
zeristor
1
Co masz na myśli przez select? Zaznacz je i np. Skopiuj? A może je wyodrębniasz? Dziękuję za wyjaśnienie!
langlauf.io
Ponieważ brakujące linie są poprzedzone „-”, wybrałem jeden, a następnie dopasowałem wszystkie, wybrałem całą linię i skopiowałem. Wbudowany sposób byłby po prostu bardziej puszysty do zapomnienia.
zeristor
5
Myślę, że warto wyjaśnić, że oba pliki nie mogą być mocno otwarte. Jeśli dwukrotnie klikniesz oba, aby oba zostały otwarte, nie możesz podświetlić obu plików na pasku bocznym za pomocą przycisku ctrl. Musisz upewnić się, że jeden z nich jest zamknięty, zanim będziesz mógł wybrać oba pliki. Dowiedziałem się o tym, ponieważ miałem już oba pliki otwarte i chciałem użyć plików różnic ...
Battousai 8.04.16
1
@NaveenDA Dostosowałem swoją odpowiedź, aby móc usunąć uszkodzony link. Dzięki za podpowiedź!
langlauf.io
25

AKTUALIZACJA STYCZNIA 2018 - szczególnie dla Sublime / Mac

(Jest to bardzo podobne do odpowiedzi Marty'ego F., ale rozwiązuje niektóre problemy z poprzednich odpowiedzi, łączy kilka różnych sugestii i omawia krytyczne rozróżnienie, które na początku sprawiło mi problemy.)

Korzystam z Sublime Text 3 (kompilacja 3143) na Macu i od około 30 minut próbuję znaleźć tę funkcję porównywania plików. Użyłem go wcześniej na Sublime / Mac bez żadnych problemów, ale tym razem było trudniej. Ale w końcu to rozgryzłem.

  1. Format pliku nie musi być UTF-8 . Pomyślnie porównałem pliki UTF-8, ISO-8559-1 i Windows-1252.

  2. Brak pliku> Otwórz foldery na Sublime / Mac . Wiele powyższych instrukcji zaczyna się od „Wybierz plik> Otwórz foldery”, ale to nie istnieje w Sublime / Mac.

  3. Porównanie plików działa na zasadzie Projektu . Jeśli chcesz porównać dwa pliki, należy je zapisać na dysku i w części bieżącego projektu.

  4. Sposoby otwarcia projektu

    • Jeśli Sublime / Mac nie działa lub działa, ale nie ma otwartych okien, przeciągnij folder do aplikacji Sublime.
    • Jeśli Sublime / Mac jest uruchomiony, wybierz „Plik> Otwórz”, przejdź do żądanego folderu, nie wybieraj pliku lub folderu i kliknij „Otwórz”.
  5. Dodaj folder do projektu . Jeśli pliki, które chcesz porównać, nie należą do tej samej hierarchii, najpierw otwórz folder zawierający jeden z plików. Następnie wybierz „Projekt> Dodaj folder do projektu”, przejdź do odpowiedniego folderu i kliknij „Otwórz”. Na pasku bocznym będą widoczne dwa foldery poziomu głównego.

  6. Pasek boczny musi być widoczny . Możesz albo „Widok> Pasek boczny> Pokaż pasek boczny” lub użyć skrótu, Command-K, Command-B.

  7. Pliki muszą być zamknięte (tzn. Zapisane), aby porównać . Pojedyncze kliknięcie pliku na pasku bocznym nie otwiera pliku, ale go wyświetla. Możesz stwierdzić, czy plik jest otwarty, jeśli jest wymieniony w sekcji „Otwórz pliki” u góry paska bocznego. Dwukrotne kliknięcie pliku lub modyfikacja pliku automatycznie zmieni status pliku na „Otwórz”. W takim przypadku należy go zamknąć przed próbą porównania.

  8. Wybierz pliki z hierarchii folderów . Standardowy skrót do komputera Mac tutaj ( pojedynczy ) kliknij pierwszy plik, a następnie kliknij drugi plik z wciśniętym klawiszem Command. Po wybraniu pierwszego pliku zobaczysz jego zawartość, ale nie jest on otwarty. Następnie, po kliknięciu drugiego pliku z wciśniętym klawiszem Command, zobaczysz jego zawartość, ale ponownie, żadne z nich nie jest otwarte. Zauważysz tylko jedną kartę w panelu edycji.

  9. Kliknięcie z wciśniętym klawiszem Control to nie to samo co kliknięcie prawym przyciskiem . To mnie złapało. Używam gładzika i często korzystam z klawisza Control, klikając prawym przyciskiem myszy lub klikając drugi raz. To mi nie działa . Ponieważ jednak skonfigurowałem gładzik w Preferencjach systemowych, aby używać prawego dolnego rogu gładzika jako kliknięcia prawym przyciskiem myszy, zadziałało, wyświetlając menu kontekstowe za pomocą „Usuń”, „Pokaż w Finderze” i… „Pliki różnicowe ...”

Voilà! Mam nadzieję, że to komuś pomoże.

Zonker.in. Geneva
źródło
2
Czy możliwe jest porównanie folderów zamiast porównania plików?
DCBoy
1
Jezu ! właśnie zapisałeś użytkowników komputerów Mac!
analyst045,
10

AKTUALIZACJA PAŹDZIERNIKA 2017 Nigdy nie wiedziałem, że ta funkcja istniała w Sublime Text, ale wydaje się, że interfejs nieco się zmienił od poprzedniej odpowiedzi - przynajmniej w OS X. Oto szczegółowe kroki, które wykonałem:

  1. Na pasku menu kliknij Plik -> Otwórz ...
  2. Przejdź do FOLDERU zawierającego pliki do porównania, a po wybraniu FOLDERU kliknij przycisk Otwórz, spowoduje to pojawienie się paska bocznego FOLDERÓW
  3. Na pasku bocznym FOLDERS kliknij pierwszy plik do porównania
  4. Przytrzymaj klawisz Ctrl w systemie Windows lub ⌘ w systemie OS X i kliknij drugi plik
  5. Po wybraniu obu plików kliknij jeden z nich prawym przyciskiem myszy i wybierz opcję Zróżnicowane pliki ...

Otwiera to nową kartę pokazującą porównanie. Pierwszy plik na czerwono, drugi na zielono.

Marty F.
źródło
8

Widok - Układ i Widok - Grupy zrobią w najnowszej Sublime 3

na przykład:

Shift+ Alt+ 2-> tworzy 2 kolumny

Ctrl+ 2-> przenieś wybrany plik do kolumny 2

To jest do porównania obok siebie. W przypadku rzeczywistego porównania istnieje inna funkcja, o której już wspomniano. Niestety nie mogę znaleźć sposobu na jednoczesne przewijanie kolumn, co byłoby fajną funkcją.

Daniele Dellafiore
źródło
1
Aby zamknąć grupę, możesz użyć Ctrl+ K Ctrl+down
Alex Raj Kaliamoorthy
2

Nikt nie mówi o Linuksie, ale wszystkie powyższe odpowiedzi będą działać. Wystarczy użyć Ctrl, aby wybrać więcej niż jeden plik. Jeśli chcesz porównać obok siebie, Meld jest cudowny.

Wannabe JavaGeek
źródło
2

Opcja Różnic pojawia się tylko wtedy, gdy pliki znajdują się w folderze będącym częścią Projektu.

Następnie możesz porównać pliki bezpośrednio w Sublime Text.

Przejdź do folderu zawierającego je za pomocą Otwórz folder ... lub w projekcie Wybierz dwa pliki (tzn. Przytrzymując klawisz Ctrl w systemie Windows lub ⌘ w systemie macOS), które chcesz porównać na pasku bocznym Kliknij prawym przyciskiem myszy i wybierz pliki Diff ... opcja.

Ricardo
źródło
0

Jest też wtyczka BeyondCompare. Otwiera 2 pliki w BeyondCompareoknie. Całkiem wygodne otwieranie plików z wysublimowanego okna.

Będziesz potrzebował instalacji BC3 w systemie. Po zainstalowaniu wtyczki musisz podać ścieżkę do instalacji.

Przykład:

{
    //Define a custom path to beyond compare
    "beyond_compare_path": "G:/Softwares/Beyond Compare 3/BCompare.exe"
}
Aditya Gupta
źródło