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


68

使用Git,我的提交编辑器是Vim。我在记住换行方面一直做得很差,所以我得到的行很长(例如,参见此答案)。有没有使用一些办法git config.vimrc魔法,我能得到Vim的在72列自动换行?

相关问题。


您链接到的问题建议您在中设置'textwidth'选项.vimrc。那不符合您的需求吗?
Josh Lee


@JoshLee-我的印象是可以全局设置最大宽度。我只想在git-commit消息中设置宽度。
mgilson 2012年

@RemcoOverdijk-具有讽刺意味的是,这是我尝试发布的作为相关问题的链接。我不知道我是如何得到另一条链路(实际上,当我跟着这是第一次我记得看到它)......总之,要明确我只想力包裹时,在git的承诺,我并不是.vimrc格式方面的专家(在我看来,这全都是外语)。
mgilson 2012年

Answers:


97

将此添加到您的.vimrc

au FileType gitcommit setlocal tw=72

13
.../vim73/ftplugin/gitcommit.vim除非您设置了自己的文本宽度,否则该设置应该已经存在。
idbrii 2012年

仅当formatoption t设置时有效。使用:set fo?来检查:set fo+=t,以正确的。
亨宁

要使用此解决方案,您也将需要:filetype on.vimrc。这使vim可以检查文件类型,并在这种情况下看到您正在编辑gitcommit文件。@Henning也是正确的,您需要包含一个带有t的fo来包装textwidth。但是,据我了解,这是默认设置,但仍然是一个失败点。
新手C

8
我必须filetype plugin on在.vimrc中说
Collin Anderson

24

尽管其他答案可以很好地解决此问题,但我强烈建议您安装Tim Pope的fugitive.vim

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

Vim上关于逃犯的示例提交消息


3
Git / vim似乎在没有任何插件的情况下进行了语法高亮显示。
hertzsprung 2015年

1
我已经安装了此文件,但提交消息中的字符数未包含72个字符
Steven Aguilar,


10

2018更新-更新vim

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


Mac用户可以使用Homebrew

brew install vim

如果仍然看不到语法突出显示,请确保已启用它:

您需要根据Arch Linux文档在.vimrc文件中进行以下设置

filetype plugin on
syntax on



1

之前的文章中有几个选项可以工作,但我注意到不同系统之间存在不一致之处。

一旦我意识到Fedora 28(最近从F26升级)就很容易了:git-commit / git-tag中的:version指出它指向.virc文件(怪异*),因此我只需将〜/ .vi m rc复制到〜/。 virc [除外,请参见下文]。

来自brew的带有vim 8.0的macOS 10.13.4可以按:verbose:set tw =?正常关闭/usr/share/vim/vim80/ftplugin/gitcommit.vim

由于某些原因,带有vim 7.4的CentOS 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回答后去了Chip Hogg的建议:autocmd FileType gitcommit setlocal textwidth = 72

我认为这在git-commit内部没有什么区别,但是安全起来可能更好(特别是如果该行最终在整个vimrc中被复制)。当然,在许多示例vimrcs中,文件类型都设置为on。

*但是,我仍然对为什么未显示vim的标尺感到好奇,所以我看了:help标尺,该标尺告知+ cmdline_info(在:version之后显示)需要在编译时设置。在git-commit之外的vim中运行:ver会显示不同的设置和不同的编译时间,这表明git可能正在调用vim的系统副本而不是用户。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.