gpt4 book ai didi

git - 让 vim 显示带有颜色的 git diff,就像 git diff 命令一样(红色删除,绿色添加)

转载 作者:行者123 更新时间:2023-12-02 14:56:00 25 4
gpt4 key购买 nike

我运行了git config --global alias.ci commit --verbose

这使得运行 git ci 就像运行 git commit --verbose

--verbose 标志显示提交消息模板中的差异,该模板没有注释,因此语法突出显示可以对其起作用,但会自动识别为实际上并未提交到存储库的日志中。当然,可以很长,但对于创建更好的提交注释很有用。 (而且,如果您不需要它,可以忽略它。)

无论如何,如果我运行 git diff,删除的行(以“-”开头)为红色,添加的行(以“+”开头)为绿色。

如果我运行 git ci,vim 语法会突出显示作为常规颜色(白色)删除的行,以及作为青色添加的行。

如何使 vim 语法突出显示以红色显示已删除的行并以绿色显示添加的行?

vim 状态行显示正在编辑文件“~/code.git/.git/COMMIT_EDITMSG”。我不太了解 vim 语法高亮,但我知道它是可配置的。我不确定这种情况如何配置,因为我假设 vim 使用文件扩展名来决定要遵循哪些语法突出显示规则(我可能离这里很远),而 git 没有给这个文件扩展名。

编辑:实际上,vim 必须检测到这是一个 git 提交文件,因为它的语法将前 50 个字符突出显示为黄色。假设这表明什么可以很好地适合补丁的电子邮件主题行。

最佳答案

简短版本:编辑文件 ~/.vim/after/syntax/gitcommit.vim ,然后添加如下内容:

hi diffAdded   ctermfg=green
hi diffRemoved ctermfg=red

较长的版本,解释我是如何到达那里的:

编辑提交消息时,运行 :set ft 。这将显示 Git 提交文件的文件类型为 gitcommit 。因此,要修改提交消息的突出显示,您需要编辑文件 syntax/gitcommit.vim ,并且由于您希望更改覆盖正常突出显示,因此需要将其放入 after/ 中目录。因此~/.vim/after/syntax/gitcommit.vim .

现在,找出要更改的内容。有一段非常有用的代码,是我从某个地方(从 tpope、IIRC)找到的,并且从此以后我一直愉快地使用它:

nmap <C-S-P> :call <SID>SynStack()<CR>
function! <SID>SynStack()
if !exists("*synstack")
return
endif
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunc

这样,打开详细提交,转到已删除的 block ,然后按 Ctrl-Shift-P。它将显示类似 ['gitcommitDiff', 'diffRemoved'] 的内容。然后转到添加的 block ,并获取 ['gitcommitDiff', 'diffAdded'] .

查看/usr/share/vim/vim74/syntax/gitcommit.vim显示发生了什么:syntax/gitcommit.vim包括syntax/diff.vim ,这是 diff 的标准突出显示文件。因此就是上面的模式。

查看 /usr/share/vim/vim74/syntax/diff.vim 的结尾,您会发现可能需要更改的其他模式。

关于git - 让 vim 显示带有颜色的 git diff,就像 git diff 命令一样(红色删除,绿色添加),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30247603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com