使用Git,我的提交编辑是Vim。我经常做一个很难记住包裹线的工作,所以我得到很长的线(例如参见this answer)。有没有办法使用一些git config
或.vimrc
魔法,我可以让Vim自动包裹72列的线?
将此添加到您的.vimrc
:
au FileType gitcommit setlocal tw=72
虽然其他答案完全解决了这个问题,但我强烈建议您安装Tim Pope的fugitive.vim。
fugitive.vim是一个出色的插件,它为Gim带来了Git功能。它有许多与您的问题无关的功能,但值得一试。但是,它还可以帮助您记住保持提交消息的正确长度:
这是一个自动包装的git钩子,适用于任何编辑器:https://github.com/surabhigupta/AutoWrapSeventyTwo
除了我注意到不同系统之间的不一致之外,早期帖子中的几个选项都有效。
一旦我意识到,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安装上首先执行此操作可能会从一开始就节省很多麻烦!