Git是否为COMMIT_MSG加载Vim设置?如果是这样,他们存放在哪里?

时间:2014-06-04 20:20:44

标签: git vim

我使用Vim作为Git的核心编辑器。

我注意到,只要Git在git commit之后启动Vim(并且假设启用了Vim的syntax选项),就会应用除我自己之外的一些Vim设置。特别是,我的提交消息以我未在任何地方定义的方式突出显示(见下文);我使用zenburn color scheme,但这与我的问题无关。

enter image description here

请注意,例如,第5行的分支名称是如何突出显示的颜色与其他注释的颜色不同。

此外,还会应用宣传官方Git格式指南的设置(请参阅this):

  • Vim在第1行第50列以后的任何可见字符处尖叫,或第二行不为空白;
  • Vim的textwidth设置为72。

enter image description here

别误会我的意思;我发现这些Vim设置对于编写提交消息非常有用。我的问题很简单:

  1. Git是否对这些Vim设置负责?
  2. 如果是这样,Git在哪里(在什么文件中)存储这些设置?
  3. Git通过什么机制加载这些设置?一些Git钩子负责吗?
  4. 这是一个重现这种情况的shell脚本:

    #!/bin/bash
    cd ~/Desktop
    mkdir test_cmtmsg
    cd test_cmtmsg
    git init
    touch test.txt
    git add test.txt
    git commit -m "inital commit"
    # oops, made a mistake there
    git commit --amend
    

1 个答案:

答案 0 :(得分:3)

Vim附带了许多语法定义,包括与Git一起使用的语法定义。这些可以在$VIMRUNTIME/syntax找到;具体来说,Git提交消息的消息是$VIMRUNTIME/syntax/gitcommit.vim