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

问题描述 投票:59回答:6

使用Git,我的提交编辑是Vim。我经常做一个很难记住包裹线的工作,所以我得到很长的线(例如参见this answer)。有没有办法使用一些git config.vimrc魔法,我可以让Vim自动包裹72列的线?

Related question.

git vim textwrapping commit-message
6个回答
81
投票

将此添加到您的.vimrc

au FileType gitcommit setlocal tw=72

20
投票

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

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


18
投票

将此添加到您的.vimrc

filetype indent plugin on

来自here


7
投票

2018年更新

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


安装Homebrew

brew install vim

1
投票

这是一个自动包装的git钩子,适用于任何编辑器:https://github.com/surabhigupta/AutoWrapSeventyTwo


1
投票

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

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

根据brew,来自:verbose :set tw=?的带有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的suggestion之后去了Chip Hogg的answer:autocmd FileType gitcommit setlocal textwidth = 72

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.