使用 Git,我的提交编辑器是 Vim。我一直在记住换行方面做得很差,所以我排长队(例如,参见这个答案)。有没有一种方法git config
可以.vimrc
让 Vim 在 72 列处自动换行?
7 回答
将此添加到您的.vimrc
:
au FileType gitcommit setlocal tw=72
虽然其他答案很好地解决了这个问题,但我强烈建议您安装 Tim Pope 的fugitive.vim。
fugitive.vim 是一个出色的插件,它为 Vim 带来了 Git 功能。它有许多与您的问题无关的功能,但值得一试。但是,它也可以帮助您记住保持提交消息的适当长度:
2018 更新- 更新 vim
如果您更新 vim,它将自动突出显示标题的前 50 个字符并在 72 个字符处换行。它知道你正在编辑一个 git 提交文件。
Mac 用户可以使用Homebrew:
brew install vim
如果您仍然没有看到语法突出显示,请确保已启用它:
根据 Arch linux 文档,您需要在 .vimrc 文件中进行以下设置
filetype plugin on syntax on
除了其他答案,gqip
在编辑时使用 重新格式化段落。
这是一个用于自动包装的 git 钩子,适用于任何编辑器: https ://github.com/surabhigupta/AutoWrapSeventyTwo
早期帖子中的几个选项有效,除了我注意到不同系统之间的不一致。
一旦我意识到 Fedora 28(最近从 F26 升级)就很容易了:git-commit/git-tag 中的版本显示它指向 .virc 文件(奇怪*)所以我只是将我的 ~/.vi m rc 复制到~/. virc [除了,见下文]。
根据:verbose :set tw=?来自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 的回答之后,我(暂时)寻求 Chip Hogg 的建议:autocmd FileType gitcommit setlocal textwidth=72
我认为它在 git-commit 内部并没有太大的不同,但最好是安全的(特别是如果该行最终在整个 vimrc 中被复制)。文件类型当然设置为 on,就像在许多示例 vimrcs 中一样。
*但是,我仍然很好奇为什么 vim 的标尺没有显示,所以我查看了 :help 标尺,它通知 +cmdline_info(在 :version 之后显示)需要在编译时设置。在 git-commit 之外的 vim 中运行 :ver 会显示不同的设置和不同的编译时间,这表明 git 可能正在调用 vim 的系统副本而不是用户副本。
所以我一开始应该做的是运行git config --global core.editor "vim",但我没有这样做,因为我认为这是一个多余的步骤。在每次安装 git 时先执行此操作可能会从一开始就省去很多麻烦!