比较Sublime Text中两个文件的内容

Lan*_*ine 375 diff compare sublimetext sublimetext2 sublime-text-plugin

我有两个非常相似的开源项目的克隆存储库,我在Sublime Text 2中的不同实例中一直在努力达到我想要的结果.使用了这两个项目的代码.我一直使用Git作为我的项目的版本控制,但没有包括原始项目.因此,我希望能够快速比较原始项目的两个文件的内容,并比较它们与我的项目之间的差异.

我希望Sublime Text 2具有"比较文件"功能,但我似乎无法在设置或在线中找到任何与之相关的内容.完成此任务的第三方ST2程序包也可以正常运行.在ST2文本编辑器中可以执行这样的任务吗?

Der*_*會功夫 671

您实际上可以在Sublime Text中本地比较文件.

  1. 通过Open Folder...或在项目中导航到包含它们的文件夹
  2. 在侧栏中选择要比较的两个文件(即,通过按住CtrlWindows或在macOS上)
  3. 右键单击并选择该Diff files...选项.

  • @MohamedHussain真的有两个不同的侧边栏,你需要在正确的侧边栏才能工作.如果您转到文件>打开文件夹...,选择您的文件所在的文件夹,然后选择查看>侧栏>显示侧栏,您将获得所需的文件夹.您可以通过选择"视图">"侧栏">"显示打开的文件"来获取另一个,但是这个不允许您使用"差异文件..."选项. (57认同)
  • 不幸的是,这似乎不再适用于mac上的sublime build 3103.一旦我右键单击第二个文件取消选中, (22认同)
  • @Derek:使用select能够选择但无法在右键单击时找到diff文件选项,只有右键单击才能获得关闭选项. (18认同)
  • 在OSX上的Build 3144中不适用于我.我可以在文件界面中选择两个文件,但是当我按住Ctrl键时,只有一个文件被选中,而diff选项则不存在. (6认同)
  • 在3114年也不适合我 - 窗户.右键单击文件时没有diff选项. (4认同)
  • 我使用了Compare With,效果很好,实际上是一个更好的解决方案. (3认同)
  • @MohamedHussain你试过班次吗? (2认同)
  • @jmc不,事实并非如此.两个父文件夹都需要位于侧边栏中,但您可以将所需的任意两个文件区分开,无论它们位于何处. (2认同)
  • 请注意那些“在 Ctrl/Cmd+click 上取消选择”问题:这些文件_必须_被关闭,我的意思是,它们都没有作为选项卡打开(但如果一个作为预览选项卡打开并不重要,选项卡斜体标签)。这可能是一个错误,但这就是它的工作方式:) (2认同)

Dan*_*any 204

比较Side-By-Side看起来对我来说最方便,虽然它不是最受欢迎的:

UPD:我需要补充一点,这个插件可以在比较大文件时冻结ST.如果你要比较大文本肯定不是最好的决定.

  • 这是IMO最简单,最方便的解决方案.在ST3中运行良好 (10认同)
  • 效果很好,可以比较来自不同位置的文件,我没有用本机比较做. (4认同)
  • 这是一个更好的做事方式:) (4认同)
  • 这也适用于在新的未保存的选项卡中复制粘贴的内容,这非常方便。 (3认同)

Mat*_*DMo 58

通过Package Control可以使用许多diff插件.我使用过Sublimerge Pro,它运行得很好,但它是一个商业产品(具有无限的试用期)和封闭源代码,所以如果你想改变一些东西,或者只是看看它的内部结构,你就无法调整它.FileDiffs很受欢迎,从安装次数来看,所以你可能想尝试一下.

  • @LanceLafontaine我通常不会这样做,但是你介意在下面改变Derek朕会功夫的回答吗?我们俩都不需要*积分,但我不知道当时有内置的差异.我现在在Sublime中一直使用它.我不需要的唯一时间是我需要外部工具的扩展功能. (4认同)
  • 我现在正在使用FileDiffs,它的工作原理很吸引人。谢谢,回答被接受。 (2认同)
  • 好吧,我无法弄清楚如何使用 FileDiff。您能否简要描述一下我如何将两个文件与它进行比较。 (2认同)

lan*_*.io 45

更新
(鉴于赞成票,我觉得需要一个完整的逐步解释...)

  1. 在菜单栏中单击File- >Open Folder...
  2. 选择一个文件夹(实际文件夹并不重要,这一步只是为了使FOLDERS侧边栏可用)
  3. 如果还没有显示侧栏,请通过View- > Side Bar- >显示Show Side Bar
  4. 使用此FOLDERS标题侧栏导航到要比较的第一个文件.
  5. 选择它(单击它),按住ctrl并选择第二个文件.
  6. 选择两个文件后,右键单击其中一个文件并选择 Diff Files...

现在应该有一个新的Tab显示比较.


原始简答:
请注意:

"Diff文件"仅与"文件夹"侧栏一起显示(用于打开文件夹:文件 - >打开文件夹),而不是"打开文件"侧栏.

  • 我认为值得解释的是,两个文件都无法打开.如果您在两者上双击以便它们都打开,那么您无法使用ctrl按钮突出显示侧栏中的两个文件.您必须确保其中一个已关闭,然后才能选择这两个文件.我找到了这个,因为我已经打开了两个文件,并希望使用diff文件... (5认同)

Zon*_*eva 18

更新2018年1月 - 尤其是Sublime/Mac

(这与Marty F上面的回复非常相似,但是解决了之前回复中的一些问题,结合了几个不同的建议,并讨论了最初给我带来问题的重要区别.)

我在Mac上使用Sublime Text 3(build 3143)并且已经尝试了大约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 shorcut这里,()单击第一个文件,然后命令单击第二个文件.当您选择第一个文件时,您将看到其内容,但它未打开.然后,当您按住Command键并单击第二个文件时,您将看到内容,但同样,它们都没有打开.您会注意到编辑面板中只有一个选项卡.

  9. 按住Control键单击与右键单击不同.这是让我的.我使用我的触控板并经常使用按住Control键单击作为右键单击或辅助点击.对我不起作用.但是,由于我在"系统偏好设置"中配置了触控板,使用触控板的右下角作为右键单击,显示上下文菜单,显示"删除","在Finder中显示",以及.... "差异文件......"

瞧!我希望这可以帮助别人.

  • 是否可以进行文件夹比较而不是文件比较? (2认同)

小智 11

所有其他答案要么声明文件只有在文件夹侧栏中的项目中打开才能进行比较,要么依赖第三方插件。

实际上,可以通过选择两个选项卡 ( ctrl+ click) 来直接比较任意两个选项卡,然后right click在任一选项卡上并选择Diff Selected Tabs...

(在 ST 版本 4143 中测试)


小智 9

更新2017年10月 我从未知道Sublime Text中存在此功能,但界面似乎与之前的答案略有不同 - 至少在OS X上.以下是我遵循的详细步骤:

  1. 在菜单栏中单击文件 - >打开...
  2. 导航到包含要比较的文件的文件夹以及所选的文件夹,单击打开按钮,这会使FOLDERS侧边栏出现
  3. 在FOLDERS侧边栏中,单击要比较的第一个文件
  4. 按住Windows上的Ctrl或OS X上的⌘,然后单击第二个文件
  5. 选中两个文件后,右键单击一个并选择Diff Files ...

这将打开一个显示比较的新选项卡.第一个文件是红色,第二个是绿色.


Dan*_*ore 6

视图-布局和视图-组将在最新的Sublime 3中使用

例如:

Shift+ Alt+ 2- >创建2列

Ctrl+ 2->将所选文件移至第2列

这是用于并排比较。对于实际的差异,还有其他已经提到的差异函数。不幸的是,我找不到使列同时滚动的方法,这将是一个不错的功能。