vim syntax highlighting for git commit messages -

2020-05-26 01:36发布

问题:

As mentioned in this answer, since Git 1.8.2 you can use core.commentchar config value to change commit message comments to something else than the default # (hashmark or hashsign).

That is a life-saver e.g. if your commit message policy wants you to start commit message with ticket number:

#123 Fixed array indices

Sad part is that this breaks Vim syntax highlighting.

How can you bring the beauty back?

回答1:

You should try to run :verbose syntax. The active syntax file is probably $VIMRUNTIME\syntax\gitcommit.vim (github version which is likely in your .vim).

It will tell you which syntax line will trigger the formatting as comment.

You'll probably see something like :

 gitcommitComment xxx match /^#.*/
     links to Comment

or

 syn match   gitcommitComment   "^#.*"

meaning it matches every line starting by #.

You might be able to modify it so that a # on the first line is not considered as a comment. I don't know syntax format enough to give you a full solution.

 \%^   match the beginning of file
 \%1l  match line 1
 \%>1l match below line 1

So you might try to modify the gitComment pattern so that it does not work on line 1 of your git commit.

(I tried some things but did not manage to only exclude first line of comment ! It seems there is also a diffComment messing things up because gitcommit includes diff format with syn include @gitcommitDiff syntax/diff.vim) )

For more details, see :help syntax and :help pattern.

Another good resource on syntax highligthing : Learn Vim the Hard Way, chapter 46.