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

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

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


person LanceLafontaine    schedule 16.09.2014    source источник


Ответы (10)


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

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

person Derek 朕會功夫    schedule 03.05.2015
comment
@Derek: Невозможно выбрать два файла одновременно на боковой панели в Sublime с помощью клавиши Cmd или Ctrl в Mac. - person Mohamed Hussain; 01.10.2015
comment
@Derek: с помощью select можно выбрать, но не может найти параметр файла diff при щелчке правой кнопкой мыши, только при щелчке правой кнопкой мыши параметр закрытия. - person Mohamed Hussain; 01.10.2015
comment
@MohamedHussain На самом деле есть две разные боковые панели, и вам нужно выбрать правильную, чтобы это сработало. Если вы перейдете в меню «Файл»> «Открыть папку ...», выберите папку, в которой находятся ваши файлы, а затем выберите «Просмотр»> «Боковая панель»> «Показать боковую панель», и вы получите ту, которая вам нужна. Другой вы получите, выбрав «Вид» ›Боковая панель› Показать открытые файлы, но этот не позволит вам использовать опцию «Различия файлов ...». - person Jeramy; 04.11.2015
comment
@Derek 朕 會 功夫 Я просто попросил OP сделать ваш принятый ответ. Теперь я использую Sublime diff для большинства своих нужд, за исключением тех случаев, когда мне нужны некоторые расширенные параметры, и в этом случае я использую внешний инструмент, такой как P4Merge, DiffMerge или Diffuse (Win, OSX и Linux, соответственно). - person MattDMo; 29.02.2016
comment
@TJ. просто попросил его переключить (я написал принятый на данный момент ответ). - person MattDMo; 29.02.2016
comment
@jmc нет, это не так. Обе родительские папки должны находиться на боковой панели, но вы можете различать любые два файла, которые захотите, независимо от того, где они находятся. - person MattDMo; 29.02.2016
comment
К сожалению, это больше не работает в возвышенной сборке 3103 на Mac. Как только я щелкну правой кнопкой мыши, второй файл будет отключен, - person merlin; 13.04.2016
comment
@merlin У меня работает в сборке 3114 на OSX. Наверное, починили. - person Derek 朕會功夫; 20.07.2016
comment
Не работает у меня в сборке 3144 на OSX. Я могу выбрать два файла в файловом интерфейсе, но когда я нажимаю Ctrl, выбирается только один, а опции сравнения нет. - person James J; 18.08.2016
comment
Не работает у меня тоже 3114 - windows. Когда я щелкаю файлы правой кнопкой мыши, нет опции сравнения. - person dangsonbk; 12.09.2016
comment
Примечание для тех, у кого не выбран вариант Ctrl / Cmd + щелчок: эти файлы должны быть закрыты, я имею в виду, ни один из них не открыт как вкладка (но не имеет значения, открыт ли он как вкладка предварительного просмотра, название вкладки выделено курсивом). Это может быть ошибка, но так работает :) - person Ignacio Lago; 23.12.2016
comment
Это обрезает нижнюю часть моих файлов, кто-нибудь знает, как исправить эту проблему? - person Eoin; 18.01.2017
comment
Я использовал «Сравнить с», и это хорошо работает, и на самом деле это лучшее решение. - person Eoin; 18.01.2017
comment
В Sublime3 (не могу говорить о более низких версиях) это работает только для файлов UTF-8. - person Matt; 26.01.2017
comment
В моей версии Sublime, сборка 2221 для OSX, мне нужно использовать меню «Проект», чтобы добавить папку в проект .... Заголовок вверху боковой панели будет «Папки». На этой боковой панели я мог выбрать 2 файла и diff. - person Surreal Dreams; 07.03.2017
comment
Файлы должны быть сначала закрыты, чтобы можно было выбрать кратные - person Matt; 01.08.2017
comment
Это не для меня с сообщением об ошибке Diff only works with UTF-8 files. - person alex; 23.10.2017
comment
Если выбор файлов отменяется, вам необходимо закрыть боковую панель открытых файлов, выбрав Просмотр ›Боковая панель› Скрыть открытые файлы. - person Wilson; 28.07.2018
comment
Сравнение последнего кода и старого кода немного сложно, но ваше решение работает, пальцы вверх :) - person Kamlesh; 26.09.2019

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

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

person Dany    schedule 16.11.2015
comment
это самое простое и удобное решение IMO. Хорошо работает в ST3 - person mihai; 17.12.2015
comment
Работает хорошо и может сравнивать файлы из разных мест, чего мне не удалось сделать с помощью собственного сравнения. - person Leo; 24.03.2016
comment
Это также работает с копированием вставленного содержимого в новые несохраненные вкладки, что в крайнем случае удобно. - person mtone; 14.11.2016
comment
Хотел бы я увидеть это раньше, это спасло бы меня от непродуктивного дня. - person 0_o; 15.03.2017
comment
Сравнить Side-By-Side мне просто помогло. - person noob; 28.06.2017
comment
кажется более очевидным вопросом к ответу - person user7082181; 17.02.2020
comment
Это выглядит красиво. Надеюсь, это не так нестабильно для больших файлов, как сказал ответчик. Лучше, чем другие. - person LeanMan; 29.09.2020
comment
нравится вот этот! кто-нибудь знает, как извлечь отдельный список цветных линий? - person Ulf Gjerdingen; 05.11.2020

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

person MattDMo    schedule 16.09.2014
comment
Сейчас я использую FileDiffs, и он отлично работает. Спасибо, ответ принят. - person LanceLafontaine; 25.09.2014
comment
Ну, я не могу понять, как использовать FileDiffs. Не могли бы вы вкратце описать, как я могу сравнить с ним два файла. - person Jamil Ahmed; 17.03.2015
comment
@LanceLafontaine Обычно я бы этого не сделал, но не могли бы вы изменить принятый ответ на ответ Дерека 朕 會 功夫 ниже? Никто из нас на самом деле не нуждается в очках, но я не знал, что в то время была встроенная разница. Теперь я использую его все время в Sublime. Единственный раз, когда мне не нужны расширенные функции внешнего инструмента. - person MattDMo; 29.02.2016
comment
Какой из этих плагинов может обнаруживать движение целых блоков текста? И не только сказать, что некоторые линии здесь отсутствуют и появляются там, но и показать стрелками, как они двигались? - person skan; 20.01.2017
comment
Благодаря этому ответу я установил FileDiffs и добавил команду для использования TortoiseMerge.exe для сравнения. Это было огромным улучшением для моего ежедневного использования превосходного сравнения кода. Спасибо! - person lyubeto; 24.01.2017

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

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

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


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

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

person gogo_gorilla    schedule 13.10.2015
comment
Есть ли способ выбрать эти разные строки? Один отображается красным, а другой зеленым - person zeristor; 15.01.2016
comment
Что вы имеете в виду под словом «выбор»? Выделите их и, например, скопировать их? Или их извлекать? Спасибо за разъяснения! - person gogo_gorilla; 15.01.2016
comment
Поскольку пропущенные строки имеют префикс '-', я выбрал одну, а затем сопоставил все, выделил всю строку и скопировал. Встроенный способ было бы проще забыть. - person zeristor; 15.01.2016
comment
Думаю, стоит пояснить, что оба файла невозможно открыть жестко. Если вы дважды щелкнули оба файла, чтобы они оба открылись, вы не сможете выделить оба файла на боковой панели с помощью кнопки ctrl. Вы должны убедиться, что один из них закрыт, прежде чем вы сможете выбрать оба файла. Я узнал об этом, потому что у меня уже были открыты оба файла и я хотел использовать файлы diff ... - person Battousai; 08.04.2016
comment
@Battousai Я могу, независимо от того, из-за плагина или нет (возможно, улучшения боковой панели). Я открываю оба файла, затем снова выбираю оба и могу различать их, открываясь в третьем файле. Возможно - два выбранных файла должны находиться в папке проекта, а не в разделе «Открыть файлы» в верхней части боковой панели. - person Craicerjack; 08.02.2017
comment
@NaveenDA Я адаптировал свой ответ, чтобы удалить неработающую ссылку. Спасибо за подсказку! - person gogo_gorilla; 30.06.2017

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

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

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

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

  2. Нет файла ›Открытые папки на Sublime / Mac. Многие приведенные выше инструкции начинаются с Select File ›Open Folders, но этого нет в Sublime / Mac.

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

  4. Способы открытия проекта

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

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

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

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

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

Вуаля!

person Zonker.in.Geneva    schedule 21.01.2018
comment
Можно ли сравнить папки вместо сравнения файлов? - person DCBoy; 24.01.2018
comment
боже! вы только что спасли пользователей Mac! - person analyst045; 11.12.2019
comment
После всех этих лет, как я пропустил щелчок мышью при нажатой клавише Control - это не то же самое, что щелчок правой кнопкой мыши? Спасибо за это. И, FWIW, по крайней мере, на MacBook Pro под управлением MacOS Mojave по умолчанию для вторичного щелчка будет просто нажатие двумя пальцами на трекпаде. - person Paul Brady; 07.11.2020

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

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

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

person Marty F    schedule 11.10.2017

Просмотр - Макет и Просмотр - Группы будут работать в последней версии Sublime 3

eg:

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

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

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

person Daniele Dellafiore    schedule 15.10.2018
comment
А чтобы закрыть группу, вы можете использовать Ctrl + K _3 _ + _ 4_ - person Alex Raj Kaliamoorthy; 15.05.2019

Параметр «Различие» появляется только в том случае, если файлы находятся в папке, которая является частью проекта.

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

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

person Ricardo    schedule 14.06.2019

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

person Wannabe JavaGeek    schedule 31.03.2018

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

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

Пример:

{
    //Define a custom path to beyond compare
    "beyond_compare_path": "G:/Softwares/Beyond Compare 3/BCompare.exe"
}
person YetAnotherBot    schedule 02.02.2019