Сравнение содержимого двух файлов в Sublime Text

397

У меня есть два клонированных репозитория двух очень похожих проектов с открытым исходным кодом, над которыми я работал в различных случаях в Sublime Text 2, чтобы получить желаемый результат. Код из обоих этих проектов был использован. Я использовал Git в качестве контроля версий для своего проекта, но не включал оригинальные проекты. Таким образом, я хотел бы иметь возможность быстро сравнить содержимое двух файлов исходного проекта и сравнить различия между ними и моим проектом.

Я надеялся, что Sublime Text 2 будет иметь функцию «Сравнить файл», но я не могу найти что-либо связанное с этим в настройках или в Интернете. Сторонний пакет ST2 для выполнения этой задачи также будет хорошо работать. Можно ли выполнить такую ​​задачу в текстовом редакторе ST2?

LanceLafontaine
источник

Ответы:

705

Вы можете сравнить файлы прямо в Sublime Text.

  1. Перейдите к папке, содержащей их через Open Folder...или в проекте
  2. Выберите два файла (например, удерживая CtrlWindows или MacOS), которые вы хотите сравнить на боковой панели
  3. Щелкните правой кнопкой мыши и выберите Diff files...опцию.

Дерек 朕 會 功夫
источник
19
@Derek: используя select, который может выбрать, но не может найти опцию diff-файла при щелчке правой кнопкой мыши, есть только опция close при щелчке правой кнопкой мыши.
Мохамед Хуссейн
66
@MohamedHussain На самом деле есть две разные боковые панели, и вы должны быть в правильном положении, чтобы это работало. Если вы зайдете в меню «Файл»> «Открыть папку ...», выберите папку, в которой находятся ваши файлы, затем выберите «Вид»> «Боковая панель»> «Показать боковую панель», и вы получите ту, которая вам нужна. Вы получаете другое, выбрав View> Side Bar> Show Open Files, но этот не позволит вам использовать опцию Diff Files ....
Джереми
25
Это, к сожалению, больше не работает в возвышенной сборке 3103 на Mac. Как только я щелкну правой кнопкой мыши, второй файл будет отменен,
merlin
8
Не работает для меня в сборке 3144 на OSX. Я могу выбрать два файла в файловом интерфейсе, но когда я нажимаю Ctrl, только один становится выбранным, а параметр diff отсутствует.
Джеймс Дж
4
У меня тоже не работает в 3114 - windows. Когда я щелкаю правой кнопкой мыши по файлам, опция diff отсутствует.
dangsonbk
216

Сравнить Side-By-Side мне кажется наиболее удобным, хотя и не самым популярным:

UPD: мне нужно добавить, что этот плагин может заморозить ST при сравнении больших файлов. Это, конечно, не лучшее решение, если вы собираетесь сравнивать большие тексты.

Dany
источник
11
Это самое простое и удобное решение ИМО. Хорошо работает в ST3
Михай
5
Работает хорошо и может сравнивать файлы из разных мест, что мне не удалось сделать с нативным сравнением.
Лев
3
Это также работает с копированием вставленного содержимого в новые несохраненные вкладки, что очень удобно.
Мтон
1
Я хотел бы видеть это раньше, спас бы меня непродуктивным днем.
0
1
Сравнить бок о бок мне только что помогло.
нуб
61

Существует несколько плагинов diff, доступных через Package Control. Я использовал Sublimerge Pro , который работал достаточно хорошо, но это коммерческий продукт (с неограниченным пробным периодом) и с закрытым исходным кодом, поэтому вы не можете настроить его, если хотите что-то изменить, или просто посмотреть на его внутренние компоненты. FileDiffs довольно популярен, судя по количеству установок, поэтому вы можете попробовать его.

MattDMo
источник
2
Я сейчас использую FileDiffs, и он работает как шарм. Спасибо, ответ принят.
LanceLafontaine
1
Ну, я не могу понять, как использовать FileDiffs. Не могли бы вы вкратце описать, как я могу сравнить два файла с ним.
Джамиль Ахмед
4
@LanceLafontaine Я бы обычно так не делал, но не могли бы вы поменять принятый ответ на ответ Дерека 朕 會 功夫 ниже? Никто из нас не нуждается в точках, но я не знал, что в то время был встроенный дифференциал. Я сейчас использую это все время, когда в Sublime. Единственный раз, когда я этого не делаю, это когда мне нужны расширенные функции внешнего инструмента.
MattDMo
Какой из этих плагинов способен обнаруживать движение целых блоков текста? И не только сказать, что некоторые строки здесь отсутствуют и появляются там, но также показывают стрелками, как они двигались?
Скан
Благодаря этому ответу я установил FileDiffs и добавил запятую, чтобы использовать TortoiseMerge.exe для сравнения. Это было огромное улучшение для моего ежедневного использования возвышенного сравнения кода. Спасибо!
любето
48

ОБНОВЛЕНИЕ
(Учитывая положительные отзывы, я чувствую, что необходимо полное пошаговое объяснение ...)

  1. В строке меню нажмите File->Open Folder...
  2. Выберите папку (фактическая папка на самом деле не имеет значения, этот шаг просто для того, чтобы сделать FOLDERSбоковую панель доступной)
  3. Если пока не показана боковая панель, сделайте так, чтобы она отображалась через View-> Side Bar->Show Side Bar
  4. Используйте эту FOLDERSбоковую панель с заголовком, чтобы перейти к первому файлу, который вы хотите сравнить.
  5. Выберите его (нажмите на него), удерживайте Ctrl и выберите второй файл.
  6. Выбрав два файла, щелкните правой кнопкой мыши один из двух и выберите Diff Files...

Должна быть новая вкладка, показывающая сравнение.


Оригинальный короткий ответ:
Обратите внимание, что:

«Различающиеся файлы» отображаются только с боковой панелью «Папки» (чтобы открыть папку: Файл-> Открыть папку), а не с боковой панелью «Открытые файлы».

langlauf.io
источник
Есть ли способ выбрать эти разные линии? Один отображается красным, а другой
zeristor
1
Что вы подразумеваете под избранным? Выделите их и, например, скопируйте их? Или извлекать их? Благодарю за разъяснение!
langlauf.io
Поскольку отсутствующие строки имеют префикс «-», я выбрал одну, а затем сопоставил их все, выделил полную строку и скопировал. Встроенный способ будет просто пухом забыть.
zeristor
5
Я думаю, что стоит объяснить, что оба файла не могут быть открыто открыты. Если вы дважды щелкнули по обоим, чтобы они оба открылись, то вы не можете выделить оба файла на боковой панели с помощью кнопки ctrl. Вы должны убедиться, что один из них закрыт, прежде чем вы сможете выбрать оба файла. Я узнал об этом, потому что у меня уже были открыты оба файла и я хотел использовать файлы сравнения ...
Battousai
1
@NaveenDA Я адаптировал свой ответ, чтобы иметь возможность удалить неработающую ссылку. Спасибо за подсказку!
langlauf.io
25

ОБНОВЛЕНИЕ ЯНВАРЬ 2018 - специально для Sublime / Mac

(Это очень похоже на ответ Марти Ф., но рассматривает некоторые проблемы из предыдущих ответов, объединяет несколько различных предложений и обсуждает критическое различие, которое поначалу вызывало у меня проблемы.)

Я использую Sublime Text 3 (сборка 3143) на Mac и около 30 минут пытаюсь найти эту функцию сравнения файлов. Я использовал его раньше на Sublime / Mac без каких-либо проблем, но на этот раз это было сложнее. Но я наконец понял это.

  1. Формат файла не должен быть UTF-8 . Я успешно сравнил файлы UTF-8, ISO-8559-1 и Windows-1252.

  2. Нет файлов> Открытые папки на Sublime / Mac . Многие инструкции выше начинаются с «Выбрать файл> Открыть папки», но их нет в Sublime / Mac.

  3. Сравнение файлов работает на основе проекта . Если вы хотите сравнить два файла, они должны быть сохранены на диск и часть текущего проекта.

  4. Способы открыть проект

    • Если Sublime / Mac не запущен или работает, но окна не открыты, перетащите папку в приложение Sublime.
    • Если Sublime / Mac запущен, выберите «Файл> Открыть», перейдите к нужной папке, не выбирайте файл или папку и нажмите «Открыть».
  5. Добавить папку в проект . Если файлы, которые вы хотите сравнить, не являются частью одной и той же иерархии, сначала откройте папку, содержащую один из файлов. Затем выберите «Проект> Добавить папку в проект», перейдите к нужной папке и нажмите «Открыть». Теперь вы увидите две папки корневого уровня на боковой панели.

  6. Боковая панель должна быть видна . Вы можете либо «Вид> Боковая панель> Показать боковую панель», либо использовать сочетание клавиш Command-K, Command-B.

  7. Файлы должны быть закрыты (т.е. сохранены) для сравнения . Один щелчок по файлу на боковойпанели не открывает файл, но отображает его. Вы можете определить, открыт ли файл, если он указан в разделе «Открытые файлы» в верхней части боковой панели. Двойной щелчок файла или внесение изменений в файл автоматически изменит статус файла на «Открыть». В этом случае обязательно закройте его, прежде чем пытаться сравнивать.

  8. Выберите файлы в иерархии папок . Стандартный ярлык Mac здесь ( один раз ) щелкните первый файл, затем щелкните второй файл,удерживая клавишу «Command». Когда вы выберете первый файл, вы увидите его содержимое, но оно не открыто. Затем, когда вы щелкнете по команде второй файл, вы увидите его содержимое, но, опять же, ни один из них не открыт. Вы заметите только одну вкладку на панели редактирования.

  9. Щелчок по нажатию клавиши управления не совпадает с щелчком правой кнопкой мыши . Это был тот, который получил меня. Я использую свой трекпад и часто прибегаю к щелчку Control-click как правый или вторичный щелчок. Это не работает для меня. Однако, поскольку я настроил свой трекпад в «Системных настройках» на использование правого нижнего угла трекпада в качестве щелчка правой кнопкой мыши, это сработало, отобразив контекстное меню с «Удалить», «Показать в Finder» и .... "Разные файлы ..."

Вуаля! Я надеюсь, что это помогает кому-то.

Zonker.in.Geneva
источник
2
Можно ли сделать сравнение папок вместо сравнения файлов?
DCBoy
1
Боже! Вы только что спасли пользователей Mac!
analyst045
10

ОБНОВЛЕНИЕ ОКТЯБРЬ 2017 Я никогда не знал, что эта функция существует в Sublime Text, но интерфейс, кажется, немного изменился по сравнению с предыдущим ответом - по крайней мере, в OS X. Вот подробные шаги, которые я выполнил:

  1. В строке меню нажмите Файл -> Открыть ...
  2. Перейдите к FOLDER, которая содержит файлы для сравнения, и, выбрав FOLDER, нажмите кнопку «Открыть», появится боковая панель FOLDERS.
  3. На боковой панели FOLDERS нажмите на первый файл для сравнения
  4. Удерживайте Ctrl в Windows или ⌘ в OS X и щелкните второй файл
  5. Выбрав оба файла, щелкните правой кнопкой мыши один из них и выберите Разные файлы ...

Это открывает новую вкладку, показывающую сравнение. Первый файл красным, второй зеленым.

Марти F
источник
8

View - Layout и View - группы сделают в последнем Sublime 3

например:

Shift+ Alt+ 2-> создает 2 столбца

Ctrl+ 2-> переместить выбранный файл в столбец 2

Это для сравнения друг с другом. Для фактического diff есть функция diff, уже упомянутая. К сожалению, я не могу найти способ одновременно прокручивать столбцы, что было бы неплохо.

Даниэль Деллафиоре
источник
1
А чтобы закрыть группу вы можете использовать Ctrl+ K Ctrl+down
Алекс Радж Калиамурти
2

Никто не говорит о Linux, но все приведенные выше ответы будут работать. Просто используйте Ctrl, чтобы выбрать более одного файла. Если вы хотите сравнить друг с другом, Мелд прекрасна.

Wannabe JavaGeek
источник
2

Опция Diff появляется только в том случае, если файлы находятся в папке, которая является частью проекта.

Чем вы на самом деле можете сравнивать файлы прямо в Sublime Text.

Перейдите к папке, содержащей их, через Open Folder ... или в проекте. Выберите два файла (например, удерживая Ctrl в Windows или ⌘ в macOS), которые вы хотите сравнить, на боковой панели. Щелкните правой кнопкой мыши и выберите Diff-файлы ... вариант.

Рикардо
источник
0

Также есть плагин BeyondCompare. Это открывает 2 файла в BeyondCompareокне. Довольно удобно открывать файлы из возвышенного окна.

Вам понадобится установка BC3, присутствующая в системе. После установки плагина вам нужно будет указать путь к установке.

Пример:

{
    //Define a custom path to beyond compare
    "beyond_compare_path": "G:/Softwares/Beyond Compare 3/BCompare.exe"
}
Адитья Гупта
источник