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

使用 Git,我的提交编辑器是 Vim。我总是记不住换行,所以我得到了很长的换行(例如,参见 这个答案)。有没有一种方法,使用一些 git config.vimrc魔术,我可以让 Vim 自动换行72列?

相关问题。

31878 次浏览

把这个加到你的 .vimrc:

au FileType gitcommit setlocal tw=72

把这个加到你的 .vimrc:

filetype indent plugin on

来自 给你

虽然其他答案完美地解决了这个问题,我强烈建议您安装 Tim Pope 的 逃犯 Vim

Vim 是一个优秀的插件,它为 Vim 带来了 Git 功能。它有很多与你的问题无关的特性,但是值得一试。但是,它也可以帮助您记住提交消息的长度:

Sample commit message within Vim on fugitive

下面是一个可用于任何编辑器的自动包装的 git 钩子: Https://github.com/surabhigupta/autowrapseventytwo

2018更新 -更新 vim

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


Mac 用户可以使用 自酿的:

brew install vim

如果你仍然没有看到语法突显,确保你已经看到了:

你需要在.vimrc 文件 < a href = “ https://wiki.archlinux.org/index.php/vim # Syntax _ highrer”rel = “ noReferrer”> 中有以下设置 文件

filetype plugin on
syntax on

除了我注意到不同系统之间的不一致之外,前面几篇文章中的几个选项都是有效的。

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

MacOS 10.13.4和来自 啤酒的 vim 8.0可以很好地工作/usr/share/vim/vim80/ftplugin/gitcommittee. vim 根据 : 详细: 设置 tw = ?

CentOS 7.4和 vim 7.4(git 版本1.8.3.1)出于某种原因,但似乎没有利用其提供的 gitcommittee. vim 中的文本宽度行,所以我在 ~/中找了一个快速而肮脏的解决方案(以避免处理多个文件)。Vimrc:

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

这似乎工作得很好,也很容易记住——我大多数时候只是从那里下载,并且已经放弃了使用旧版本的 git 和 vim。

另外,在 Abe Voelker 的 回答: autocmd FileType gitcommit setlocal texttwidth = 72之后,我(暂时)选择了 Chip Hogg 的 建议

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

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

所以我一开始就应该运行 < strong > git config-global core. Editor“ vim” ,但是我没有,因为我认为这是一个多余的步骤。在每个 git 安装中首先这样做可能会从一开始就省去很多麻烦!

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

参见 Vim Tips Wiki: 段落的自动格式化