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://harttle.land/2017/05/31/vimdiff.html。如有疏漏、谬误、侵权请通过评论或 邮件 指出。