正常运行时
git diff
我得到了我习惯的直观颜色:
红色表示已删除,绿色表示已添加,白色表示未更改。
但是当我运行
git commit -v
时,在编辑器中打开的包含的差异具有我不习惯的奇怪颜色,因此解析差异的含义更加困难:
白色/灰色表示删除,青色表示添加,白色表示不变?那是什么?
我该怎么做才能使编辑器内详细提交的差异具有与直接运行
git diff
时相同的颜色?
我使用 MacOS 和 vim 作为编辑器 (
git config --global core.editor /usr/bin/vim
)
git commit -v
打开名为 COMMIT_EDITMSG
的文件。 Vim (8.2) 会将具有该名称的文件的 filetype
设置为 gitcommit
。
对应的语法规则(
$VIMRUNTIME/syntax/gitcommit.vim
)引用了syntax/diff.vim
规则,使得以+
和-
开头的行分别成为diffAdded
和diffRemoved
语法项。
您需要设置颜色方案和/或终端颜色,使
diffAdded
看起来绿色,diffRemoved
看起来红色。
检查
:hi diffAdded
和 :hi diffRemoved
为什么它们目前不是绿色和红色。
例如你可能会看到
:hi diffAdded
diffAdded xxx links to Identifier
然后
:hi Identifier
Identifier xxx term=underline cterm=bold ctermfg=6 guifg=palegreen
要覆盖与详细 Git 提交相关的特定突出显示组,可以将类似的内容添加到其
.vimrc
:
function! MyHighlights() abort
highlight diffAdded ctermfg=2 guifg=#67c12c
highlight diffRemoved ctermfg=1 guifg=#b82e19
endfunction
augroup MyColors
autocmd!
autocmd ColorScheme * call MyHighlights()
augroup END
如果您还没有指定
colorscheme
,您还需要添加它来触发 ColorScheme
事件:
colorscheme default