vimdiff

Description ^^^^^^^^^^^

When specifying --tool=vimdiff in git mergetool Git will open Vim with a 4 windows layout distributed in the following way:

------------------------------------------
|             |           |              |
|   LOCAL     |   BASE    |   REMOTE     |
|             |           |              |
------------------------------------------
|                                        |
|                MERGED                  |
|                                        |
------------------------------------------

LOCAL, BASE and REMOTE are read-only buffers showing the contents of the conflicting file in specific commits ("commit you are merging into", "common ancestor commit" and "commit you are merging from" respectively)

MERGED is a writable buffer where you have to resolve the conflicts (using the other read-only buffers as a reference). Once you are done, save and exit Vim as usual (:wq) or, if you want to abort, exit using :cq.

Layout configuration ^^^^^^^^^^^^^^^^^^^^

You can change the windows layout used by Vim by setting configuration variable mergetool.vimdiff.layout which accepts a string where the following separators have special meaning:

The precedence of the operators is as follows (you can use parentheses to change it):

`@` > `+` > `/` > `,`

Let’s see some examples to understand how it works:

Variants ^^^^^^^^

Instead of --tool=vimdiff, you can also use one of these other variants:

When using these variants, in order to specify a custom layout you will have to set configuration variables mergetool.gvimdiff.layout and mergetool.nvimdiff.layout instead of mergetool.vimdiff.layout (though the latter will be used as fallback if the variant-specific one is not set).

In addition, for backwards compatibility with previous Git versions, you can also append 1, 2 or 3 to either vimdiff or any of the variants (ex: vimdiff3, nvimdiff1, etc…) to use a predefined layout. In other words, using --tool=[g|n]vimdiff<x> is the same as using --tool=[g|n]vimdiff and setting configuration variable mergetool.[g|n]vimdiff.layout to…

Example: using --tool=gvimdiff2 will open gvim with three columns (LOCAL, MERGED and REMOTE).


版本号 #2
由 壳壳虫 创建于 2026-10-31 20:15:37 UTC
由 壳壳虫 更新于 2026-10-31 20:15:38 UTC