Git 配置:使用 Vim 来做 diff
vimdiff 命令相当于 vim -d a.txt b.txt,用来查看两个文件的 diff。
可以通过 :highlight 命令来进行 diff 配色,也可以将 vimdiff 设置到 Git 的 diff 工具。

基本使用
查看两个文件的 Diff:
vimdiff a.txt b.txt
# 相当于
vim -d a.txt b.txt
退出 Diff 查看需要关闭两个文件,可以按下 :qa 来关闭所有。
diff 的配色
Vim 配置 中可以使用 highlight(缩写为 hi)命令来配置各种高亮颜色,
比如我们在 Vim 搜索配置 中提到的匹配文字的前景色与背景色:
highlight Search ctermbg=yellow ctermfg=black
可以通过 :help highlight-groups 查看所有可配置的高亮。比如在 Diff 高亮中,
你可能需要配置以下 4 个高亮组:
" 新增的行
hi DiffAdd ctermbg=235 ctermfg=108 guibg=#262626 guifg=#87af87 cterm=reverse gui=reverse
" 变化的行
hi DiffChange ctermbg=235 ctermfg=103 guibg=#262626 guifg=#8787af cterm=reverse gui=reverse
" 删除的行
hi DiffDelete ctermbg=235 ctermfg=131 guibg=#262626 guifg=#af5f5f cterm=reverse gui=reverse
" 变化的文字
hi DiffText ctermbg=235 ctermfg=208 guibg=#262626 guifg=#ff8700 cterm=reverse gui=reverse
xterm 支持 256 种颜色,这里给了一个列表:http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim。通过数字就可以引用对应的颜色,比如 ctermfg=226 等价于 ctermfg=yellow。

Tmux 256 色终端
在 Tmux 中打开的 Vim 颜色配置可能是失效的。
这是因为 Tmux 的默认 终端 设置为 screen,需要把它设置为 screen-256color。
在 ~/.tmux.conf 中添加如下 Tmux 配置:
set -g default-terminal "screen-256color"
在 Tmux 中通过
tmux show -g来查看当前的 Tmux 设置。
Git 使用 vimdiff
为了使用自定义的 diff 工具,Git 提供了 git difftool 命令在这时替代 git diff。
我们把它的命令行工具配置到 vimdiff:
git config --global diff.tool vimdiff
git config --global difftool.prompt false
git config --global alias.d difftool
gitdiff在打开每一个文件的 diff 时都会进行输入确认,设置difftool.prompt可以禁用这一行为。
此后使用 git difftool 时 Git 便会调用 vimdiff 逐一打开每个文件的 Diff。
查看完成一个文件的 diff 后使用 :qa 关闭该文件 diff。这时 Git 会自动打开下一个文件的 diff。
如果中止本次 Diff 呢?首先需要让 Git 信任 difftool 的返回码:
git config --global difftool.trustExitCode true
git config --global mergetool.trustExitCode true
然后让 vimdiff 返回 1::cq(:help cquit)退出 Vim。
本文采用 知识共享署名 4.0 国际许可协议(CC-BY 4.0)进行许可,转载注明来源即可: https://www.harttle.com/2017/05/31/vimdiff.html。如有疏漏、谬误、侵权请通过评论或 邮件 指出。