在Vim中自动包装长Git提交消息

时间:2012-06-13 20:59:34

标签: git vim textwrapping commit-message

使用Git,我的提交编辑是Vim。我一直都很难记住换行,所以我得到了很长的句子(例如见this answer)。有没有办法使用一些git config.vimrc魔法,我可以让Vim自动将行包裹在72列?

Related question.

7 个答案:

答案 0 :(得分:81)

将此添加到您的.vimrc

au FileType gitcommit setlocal tw=72

答案 1 :(得分:20)

虽然其他答案完全解决了这个问题,但我强烈建议您安装Tim Pope fugitive.vim

fugitive.vim是一个出色的插件,它为Gim带来了Git功能。它有许多与您的问题无关的功能,但值得一试。但是,它还可以帮助您记住保持提交消息的正确长度:

Sample commit message within Vim on fugitive

答案 2 :(得分:18)

将此添加到您的.vimrc

filetype indent plugin on

来自here

答案 3 :(得分:6)

2018年更新

如果您更新vim,它会自动突出显示标题的前50个字符,并以72个字符换行。它知道您正在编辑git提交文件。

安装Homebrew

brew install vim

答案 4 :(得分:1)

这是一个可以与任何编辑器一起使用的自动包装的git钩子: https://github.com/surabhigupta/AutoWrapSeventyTwo

答案 5 :(得分:1)

早期帖子中的一些选项有效,除了我注意到不同系统之间的不一致。

Fedora 28(最近从F26升级)很容易一旦我意识到:git-commit / git-tag里面的版本显示它指向.virc文件(怪异*)所以我只是复制了我的〜/ .vi m rc进入〜/ .virc [除了,见下文]。

根据{{​​3}},来自brew的vim 8.0的macOS 10.13.4可以很好地使用/usr/share/vim/vim80/ftplugin/gitcommit.vim。

CentOS 7.4与vim 7.4(git版本1.8.3.1)由于某种原因虽然似乎没有使用其提供的gitcommit.vim中的textwidth行,所以我去了一个快速而肮脏的解决方法(为了救我来自处理多个文件)〜/ .vimrc:

nmap <F2> :set textwidth=72<CR>
inoremap <F2> <Esc>:set textwidth=72<CR>a

这似乎工作得很好并且很容易记住 - 我大多只是从那里拉出来并且有点放弃使用旧版本的git和vim来解决这些问题。

否则,我(暂时)在Abe Voelker的:verbose :set tw=?之后去了Chip Hogg的suggestion:autocmd FileType gitcommit setlocal textwidth = 72

我不认为它在git-commit中有很大的不同,但它可能更安全(特别是如果该行最终被复制到整个vimrc中)。 Filetype当然设置为on,就像许多例子中的vimrcs一样。

* 然而,我仍然很好奇为什么vim的标尺没有显示,所以我看了一下:帮助标尺通知+ cmdline_info(显示在:版本之后)需要在编译时设置时间。运行:在git-commit之外的vim中显示不同的设置和不同的编译时间,这表明git可能正在调用vim的系统副本而不是用户的副本。

所以我在开始时应该做的就是answer,除非我没有,因为我认为这是一个多余的步骤。在每个git安装上首先执行此操作可能会从一开始就节省很多麻烦!

答案 6 :(得分:0)

除了其他答案外,在编辑时使用gqip重新格式化段落。

请参见Vim Tips Wiki: Automatic formatting of paragraphs