# 文件差异查看器

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

> **TL;DR**
> `项目工具窗口 | 文件的上下文菜单 | 与编辑器比较文件`
>
>
>
> `项目工具窗口 | 文件的上下文菜单 | 文件比较`
>
>
>
> `提交工具窗口`  ![](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.vcs.diff.svg) `Ctrl+D` (Windows), `⌘ D` (macOS), `⌘ D` (IntelliJ IDEA Classic (macOS)), `⌘ D` (macOS System Shortcuts), `Ctrl+D` (XWin), `Ctrl+D` (GNOME), `Ctrl+D` (KDE), `Ctrl+D` (Emacs), `Ctrl+D` (Sublime Text), `⌘ D` (Sublime Text (macOS)), `Ctrl+D` (Visual Studio), `⌘ D` (Visual Studio (macOS)), `Ctrl+D` (NetBeans), `Ctrl+D` (Eclipse), `⌘ D` (Eclipse (macOS))
>
>
>
> `Git 工具窗口 | 文件夹或文件的上下文菜单 | 显示差异`

当比较两个文件或文件的两个版本（本地更改，或本地文件与远程仓库中其修订版本之间的更改）时，会显示此差异查看器。 您可以比较任何类型的文件，包括二进制文件和  `.jar`  文件。 要打开它，请选择两个要比较的文件或一个要比较其版本的文件，然后按 `Ctrl+D` (Windows), `⌘ D` (macOS), `⌘ D` (IntelliJ IDEA Classic (macOS)), `⌘ D` (macOS System Shortcuts), `Ctrl+D` (XWin), `Ctrl+D` (GNOME), `Ctrl+D` (KDE), `Ctrl+D` (Emacs), `Ctrl+D` (Sublime Text), `⌘ D` (Sublime Text (macOS)), `Ctrl+D` (Visual Studio), `⌘ D` (Visual Studio (macOS)), `Ctrl+D` (NetBeans), `Ctrl+D` (Eclipse), `⌘ D` (Eclipse (macOS))。 差异查看器将在新标签中打开。

差异查看器 提供一个强大的编辑器，支持代码补全、实时模板和其他功能。

您在 差异查看器 中应用的更改会自动应用到文件中。 您可以在使用 差异查看器 时以及关闭它之后随时查看文件中的更改。

![在 IntelliJ IDEA 差异查看器中比较文件](https://resources.jetbrains.com.cn/help/img/idea/2026.3/ij_compareFiles.png)

|  颜色  |  描述  |
| --- | --- |
|  ![新行](https://resources.jetbrains.com.cn/help/img/idea/2026.3/diff_new_lines_color.png) 绿色  |  已添加  |
|  ![已修改的行](https://resources.jetbrains.com.cn/help/img/idea/2026.3/diff_changed_lines_color.png) 蓝色  |  已修改  |
|  ![已删除的行](https://resources.jetbrains.com.cn/help/img/idea/2026.3/diff_deleted_lines_color.png) 灰色  |  已删除  |

## 差异与合并查看器

|  条目  |  工具提示和快捷键  |  描述  |
| --- | --- | --- |
|  ![“上一个差异”按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.general.up.svg)/ ![“下一个差异”按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.general.down.svg)  |  上一个差异/下一个差异 `Shift+F7` (Windows), `⇧ F7` (macOS), `⇧ F7` (IntelliJ IDEA Classic (macOS)), `⌘ [` (macOS System Shortcuts), `Shift+F7` (XWin), `Shift+F7` (GNOME), `Shift+F7` (KDE), `Shift+F7` (Emacs), `Shift+F7` (Sublime Text), `⇧ F7` (Sublime Text (macOS)), `Shift+F7` (Visual Studio), `⇧ F7` (Visual Studio (macOS)), `Shift+F7` (NetBeans), `Shift+F7` (Eclipse), `⇧ F7` (Eclipse (macOS)) `F7` (Windows), `F7` (macOS), `F7` (IntelliJ IDEA Classic (macOS)), `⌘ ]` (macOS System Shortcuts), `F7` (XWin), `F7` (GNOME), `F7` (KDE), `F7` (Emacs), `F7` (Sublime Text), `F7` (Sublime Text (macOS)), `F7` (Visual Studio), `F7` (Visual Studio (macOS)), `F7` (NetBeans), `Ctrl+F7` (Eclipse), `⌃ F7` (Eclipse (macOS))  |     跳转到下一个或上一个差异。       到达最后一个或第一个差异时，IntelliJ IDEA 会建议再次点击箭头按钮或按 `F7` (Windows), `F7` (macOS), `F7` (IntelliJ IDEA Classic (macOS)), `⌘ ]` (macOS System Shortcuts), `F7` (XWin), `F7` (GNOME), `F7` (KDE), `F7` (Emacs), `F7` (Sublime Text), `F7` (Sublime Text (macOS)), `F7` (Visual Studio), `F7` (Visual Studio (macOS)), `F7` (NetBeans), `Ctrl+F7` (Eclipse), `⌃ F7` (Eclipse (macOS))/ `Shift+F7` (Windows), `⇧ F7` (macOS), `⇧ F7` (IntelliJ IDEA Classic (macOS)), `⌘ [` (macOS System Shortcuts), `Shift+F7` (XWin), `Shift+F7` (GNOME), `Shift+F7` (KDE), `Shift+F7` (Emacs), `Shift+F7` (Sublime Text), `⇧ F7` (Sublime Text (macOS)), `Shift+F7` (Visual Studio), `⇧ F7` (Visual Studio (macOS)), `Shift+F7` (NetBeans), `Shift+F7` (Eclipse), `⇧ F7` (Eclipse (macOS))，并比较其他本地修改的文件。 此行为取决于 [到达最后一个更改后转到下一个文件](settings-tools-diff-and-merge.html#last_diff) 选项，该选项位于 [差异查看器设置](settings-tools-diff-and-merge.html) 中。     |
|     ![比较上一个文件图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.general.left.svg)       ![比较下一个文件图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.general.right.svg)     |     比较上一个/下一个文件    `Alt+Left` (Windows), `⌘ ⇧ [` (macOS), `⌃ ←` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ ←` (macOS System Shortcuts), `Alt+Left` (XWin), `Alt+Left` (GNOME), `Alt+Left` (KDE), `Alt+Left` (Emacs), `Ctrl+Page Up` (Sublime Text), `⌘ ⇧ [` (Sublime Text (macOS)), `Alt+Left` (Visual Studio), `⌘ ⇧ [` (Visual Studio (macOS)), `Ctrl+Page Up` (NetBeans), `Ctrl+Shift+F6` (Eclipse), `⌘ ⇧ F6` (Eclipse (macOS)) `Alt+Right` (Windows), `⌘ ⇧ ]` (macOS), `⌃ →` (IntelliJ IDEA Classic (macOS)), `⌘ ⌥ →` (macOS System Shortcuts), `Alt+Right` (XWin), `Alt+Right` (GNOME), `Alt+Right` (KDE), `Alt+Right` (Emacs), `Ctrl+Page Down` (Sublime Text), `⌘ ⇧ ]` (Sublime Text (macOS)), `Alt+Right` (Visual Studio), `⌘ ⇧ ]` (Visual Studio (macOS)), `Ctrl+Page Down` (NetBeans), `Ctrl+F6` (Eclipse), `⌘ F6` (Eclipse (macOS))  |     将上一个或下一个文件的本地副本与其来自服务器的更新进行比较。      > **Note:** > 这些控件仅在本地修改了多个文件时可用。    |
|  ![“跳转到源”按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.general.edit.svg)  |     跳转到源    `F4` (Windows), `⌘ ↓` (macOS), `F4` (IntelliJ IDEA Classic (macOS)), `F4` (macOS System Shortcuts), `F4` (XWin), `F4` (GNOME), `F4` (KDE), `F4` (Emacs), `F4` (Sublime Text), `F4` (Sublime Text (macOS)), `F4` (Visual Studio), `⌘ ↓` (Visual Studio (macOS)), `F4` (NetBeans), `F12` (Eclipse), `F3` (Eclipse (macOS))  |  在编辑器中打开选定的文件。 文本光标放置在与   差异查看器   中相同的位置。  |
|  ![收起未更改片段图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.general.collapseAll.svg)  |  收起未更改的片段  |  收起两个文件中的所有未更改片段。 不可折叠的未更改行数可在   差异 & 合并   设置页面中进行配置。 要打开   差异 & 合并   页面，请按 `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS)) 打开设置并导航到  `工具 \| 差异 & 合并` 。 。  |
|     并排查看器／统一查看器     |     选择查看器模式: 并排或统一。 并排模式包含两个面板，统一模式包含一个面板。       您可以在两个查看器中编辑代码并执行   Accept  、   追加  、   还原   操作。       只能在并排查看器的右侧部分或统一查看器的下方行中更改文本。       您只能编辑文件的本地版本。 无法编辑处于只读状态的文件。     |
|  ![设置按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.general.settings.svg)  |  设置  |     其中一些命令也可以通过差异查看器装订区域的上下文菜单使用。         在并排差异中对齐更改  ：通过用空白填充差异，将对应的行垂直对齐。       同步滚动：同时滚动两个差异窗格。         在编辑器标签页中显示差异  ：将差异查看器显示为编辑器标签页，而不是单独窗口。         在单独窗口中显示差异  ：将差异查看器显示为单独窗口，而不是编辑器标签页。         忽略差异  ：定义差异查看器应如何处理空格。        * 无 ：空格很重要，并且所有差异都会高亮显示。 默认选中此选项。    * 修整空白 ：如果空格出现在行尾和行首，则将其去除（ `("\t", " ")` ）。 * 如果两行仅在行尾空格上存在差异，则这两行会被视为相同。 * 如果两行不同，则在 [按单词](#highlight) 模式下不会高亮显示行尾空格。    * 忽略空白 ：空格不重要，无论在源代码中的位置如何。    * 忽略空格和空行 ：忽略空格和空行。 以下实体将被忽略： * 所有空格（与“忽略空格”选项相同） * 所有仅由空格组成的已添加或已移除行 * 所有由拆分或合并行组成且未更改非空白部分的更改。 例如，在此模式下， `a b c` 和 `a \n b c` 之间的差异不会被高亮显示。    * 忽略导入和格式设置 ：将忽略 import 语句中的更改和空格（但字符串文字中的空格会被保留）。        高亮显示差异  ：选择差异粒度的高亮显示方式。        * 单词 ：已修改的单词将被高亮显示    * 行数 ：已修改的行将被高亮显示    * 拆分更改 ：如果选中此选项，较大的更改将拆分为较小的更改。 例如， `A \n B` 和 `A X \n B X` 将被视为两个更改，而不是一个。    * 字符 ：已修改的符号将被高亮显示    * 无 ：如果选中此选项，则完全不会高亮显示差异。 处理经过大幅修改的文件时，请使用 无 选项。 在此类情况下，高亮显示可能会在审阅期间带来额外困难。    |
|  ![帮助图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app.actions.help.svg)  |     帮助    `F1` (Windows), `⌘ ⇧ F1` (macOS), `F1` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ F1` (macOS System Shortcuts), `F1` (XWin), `F1` (GNOME), `F1` (KDE), `F1` (Emacs), `F1` (Sublime Text), `⌘ ⇧ F1` (Sublime Text (macOS)), `F1` (Visual Studio), `F1` (Visual Studio (macOS)), `F1` (NetBeans), `F1` (Eclipse), `⌘ ⇧ F1` (Eclipse (macOS))  |  打开浏览器并显示相应的帮助页面。  |
|  |  `Ctrl+Shift+Tab` (Windows), `⌃ ⇧ ⇥` (macOS), `⌃ ⇧ ⇥` (IntelliJ IDEA Classic (macOS)), `⌃ ⇧ ⇥` (macOS System Shortcuts), `Ctrl+Shift+Tab` (XWin), `Ctrl+Shift+Tab` (GNOME), `Ctrl+Shift+Tab` (KDE), `Ctrl+Shift+Tab` (Emacs), `Ctrl+Shift+Tab` (Sublime Text), `⌃ ⇧ ⇥` (Sublime Text (macOS)), `Ctrl+Shift+Tab` (Visual Studio), `⌃ ⇧ ⇥` (Visual Studio (macOS)), `Ctrl+Shift+Tab` (NetBeans), `Ctrl+Shift+Tab` (Eclipse), `⌃ ⇧ ⇥` (Eclipse (macOS))  |  在 差异查看器 的窗格之间切换。 活动窗格有文本光标。  |
|  ![应用到左侧](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.arrowRight%4014x14.svg) ![应用到右侧](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.arrow%4014x14.svg)  |  Accept  |     应用窗格之间（适用于并排查看器）或行之间（适用于统一查看器）的差异。       尖括号按钮可以改变其行为：        * 点击 ![应用到左侧](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.arrowRight%4014x14.svg) 和 ![应用到右侧](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.arrow%4014x14.svg) 以应用更改。 此行为是默认行为。    * 按 `Ctrl` (Windows), `Ctrl` (macOS), `Ctrl` (IntelliJ IDEA Classic (macOS)), `Ctrl` (macOS System Shortcuts), `Ctrl` (XWin), `Ctrl` (GNOME), `Ctrl` (KDE), `Ctrl` (Emacs), `Ctrl` (Sublime Text), `Ctrl` (Sublime Text (macOS)), `Ctrl` (Visual Studio), `Ctrl` (Visual Studio (macOS)), `Ctrl` (NetBeans), `Ctrl` (Eclipse), `Ctrl` (Eclipse (macOS)) 可将 ![应用到左侧](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.arrowRight%4014x14.svg) 或 ![应用到右侧](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.arrow%4014x14.svg) 更改为 ![右下角 V 形按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.arrowRightDown%4014x14.svg) 或 ![左下角 V 形按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.arrowLeftDown%4014x14.svg)，并追加更改。    |
|  合并操作  |
|  ![Compare Contents 图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.vcs.diff.svg)  |  比较内容  |     点击此图标以调用选项列表，允许您比较文件的不同版本以解决冲突。   请注意，   基准   指的是本地版本和存储库版本所源自的文件版本（最初显示在中间窗格），而   中间   指的是结果版本。  |
|  ![“应用不冲突更改”按钮](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.applyNotConflicts.svg)  |  应用所有无冲突的更改  |  点击此按钮以应用所有非冲突更改。 您还可以在"设置"对话框的 Diff & Merge 页面中选中复选框   自动应用无冲突的更改  ，使此行为自动进行。  |
|  ![从左侧应用无冲突的更改](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.applyNotConflictsLeft.svg) ![从右侧应用无冲突的更改](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.applyNotConflictsRight.svg)  |  从左侧/右侧应用非冲突更改  |  点击这些按钮以合并对话框左侧/右侧部分中无冲突的更改。  |
|  ![解决简单冲突图标](https://resources.jetbrains.com.cn/help/img/idea/2026.3/app-client.expui.diff.magicResolveToolbar.svg)  |  解决简单冲突  |     点击此按钮可解决简单的冲突（例如，如果相同行的起始和结束部分在不同的文件修订版中已被修改）并合并更改。       此类冲突不会通过   应用不冲突的更改   操作解决，因为您需要确保它们被正确解决。     |
|  |  使用 GitBlame 注解  |     此选项仅可从装订区域的上下文菜单中使用。       使用此选项可了解是谁在何时向文件的仓库版本引入了哪些更改。   注解   视图可用于查看每行代码的详细信息，例如该行来源的版本、提交该行的用户 ID 以及提交日期。       有关注解的更多信息，请参阅 [定位代码作者(使用 Git 追溯注解)](investigate-changes.html#annotate_blame)。     |

## 键盘快捷键

|  键盘快捷键  |  描述  |
| --- | --- |
|  `Ctrl+Shift+D` (Windows), `⌘ ⇧ D` (macOS), `⌘ ⇧ D` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ D` (macOS System Shortcuts), `Ctrl+Shift+D` (XWin), `Ctrl+Shift+D` (GNOME), `Ctrl+Shift+D` (KDE), `Ctrl+Shift+D` (Emacs), `Ctrl+Shift+D` (Sublime Text), `Ctrl+Shift+D` (Sublime Text (macOS)), `Ctrl+Shift+D` (Visual Studio), `⌘ ⇧ D` (Visual Studio (macOS)), `Ctrl+Shift+D` (NetBeans), `Ctrl+Shift+D` (Eclipse), `⌘ ⇧ D` (Eclipse (macOS))  |  使用此键盘快捷键可显示最常用差异命令的弹出菜单。  |
|  `Ctrl+Shift+Tab` (Windows), `⌃ ⇧ ⇥` (macOS), `⌃ ⇧ ⇥` (IntelliJ IDEA Classic (macOS)), `⌃ ⇧ ⇥` (macOS System Shortcuts), `Ctrl+Shift+Tab` (XWin), `Ctrl+Shift+Tab` (GNOME), `Ctrl+Shift+Tab` (KDE), `Ctrl+Shift+Tab` (Emacs), `Ctrl+Shift+Tab` (Sublime Text), `⌃ ⇧ ⇥` (Sublime Text (macOS)), `Ctrl+Shift+Tab` (Visual Studio), `⌃ ⇧ ⇥` (Visual Studio (macOS)), `Ctrl+Shift+Tab` (NetBeans), `Ctrl+Shift+Tab` (Eclipse), `⌃ ⇧ ⇥` (Eclipse (macOS))  |  使用此键盘快捷键在左窗格和右窗格之间切换。  |
|  `Ctrl+Z` (Windows), `⌘ Z` (macOS), `⌘ Z` (IntelliJ IDEA Classic (macOS)), `⌘ Z` (macOS System Shortcuts), `Ctrl+Z` (XWin), `Ctrl+Z` (GNOME), `Ctrl+Z` (KDE), `Ctrl+Shift+Minus` (Emacs), `Ctrl+Z` (Sublime Text), `⌘ Z` (Sublime Text (macOS)), `Ctrl+Z` (Visual Studio), `⌘ Z` (Visual Studio (macOS)), `Ctrl+Z` (NetBeans), `Ctrl+Z` (Eclipse), `⌘ Z` (Eclipse (macOS))/ `Ctrl+Shift+Z` (Windows), `⌘ ⇧ Z` (macOS), `⌘ ⇧ Z` (IntelliJ IDEA Classic (macOS)), `⌘ ⇧ Z` (macOS System Shortcuts), `Ctrl+Shift+Z` (XWin), `Ctrl+Shift+Z` (GNOME), `Ctrl+Shift+Z` (KDE), `Ctrl+Shift+Z` (Emacs), `Ctrl+Shift+Z` (Sublime Text), `⌘ Y` (Sublime Text (macOS)), `Ctrl+Y` (Visual Studio), `⌘ Y` (Visual Studio (macOS)), `Ctrl+Shift+Z` (NetBeans), `Ctrl+Y` (Eclipse), `⌘ ⇧ Z` (Eclipse (macOS))  |  使用此键盘快捷键撤销/重做合并操作。 冲突将与文本保持同步。  |

## 上下文菜单命令

此上下文菜单在编辑器中间可用：

|  条目  |  描述  |
| --- | --- |
|  注解  |     启用此选项以 [注释](investigate-changes.html#annotate_blame)更改。      > **Tip:** > 此选项仅适用于受版本控制的文件。    |
|  显示空白字符  |  启用此选项以在差异查看器中将空格显示为点。  |
|  显示行号  |  启用此选项以在差异查看器中显示行号。  |
|  显示缩进参考线  |  启用此选项后，IntelliJ IDEA 将在差异查看器中显示垂直线以指示缩进的位置。  |
|  自动换行  |  启用此选项以便在调整对话框大小时让 IntelliJ IDEA 换行代码行。  |
|  高亮显示级别  |  使用此菜单项在差异查看器中选择高亮显示级别。 要了解更多关于高亮级别的信息，请参阅 [更改文件的高亮级别](disabling-and-enabling-inspections.html#change-highlighting-level-for-file)。  |

此上下文菜单在两个编辑器中均可用：

|  条目  |  描述  |
| --- | --- |
|  注解  |     启用此选项以 [注释](investigate-changes.html#annotate_blame)更改。      > **Tip:** > 此选项仅适用于受版本控制的文件。    |
|  接受/附加  |  选择这些命令来 [接受或追加](comparing-files-and-folders.html#twofiles)差异查看器中显示的行。  |
|  与剪贴板比较  |  选择此命令以将文件与 Diff Viewer 相应窗格中的 [剪贴板内容](comparing-files-and-folders.html#clipboard)进行比较。  |
|  切换到三边查看器  |  该选项仅在您比较两个文件时可用。 它允许您加载第三个文件并将其添加到比较中。  |

此上下文菜单可在差异查看器的右侧面板中使用：

|  条目  |  描述  |
| --- | --- |
|  仅显示高优先级问题/转到下一个问题  |  请点击其中一个单选按钮以定义在遇到的问题之间导航的方式。  |
|  自定义高亮显示级别  |  点击以显示滑块以更改 [差异查看器 中的高亮级别](disabling-and-enabling-inspections.html#change-highlighting-level-for-file)。  |
|  鼠标悬停在滚动条上时显示代码透镜  |  启用悬停在滚动条上时查看 差异查看器 可见区域外的代码。  |

## 运作方式

* [比较文件、文件夹和文本来源](comparing-files-and-folders.html)

* [解决 Git 冲突](resolve-conflicts.html)

* [比较已部署的文件和文件夹与其本地版本](comparing-deployed-files-and-folders-with-their-local-versions.html)

* [从命令行比较文件](command-line-differences-viewer.html)

* [从命令行合并文件](command-line-merge-tool.html)

