当从`git commit`调用时,Vim使用非标准配置?

时间:2010-08-11 15:01:19

标签: git vim

我注意到git似乎在我编写提交消息时使用不同的vim设置。我在Macports上安装了git+svn,我检查了$MYVIMRC变量:它设置为正确的文件。尽管如此,每次我提交一条消息时,我都会限制每行80个字符,区分大小写搜索,并且没有安装任何插件。

这可能是愚蠢的事。会很感激指出它是什么。

编辑:其实我刚检查过:我的插件工作正常。当我输出提交消息时,只有80个字符的列宽才奇迹般地活跃起来。

4 个答案:

答案 0 :(得分:15)

这不是一个错误,这是一个功能!

Vim知道很多文件类型 - 包括git提交(以及交互式rebase和config ...)。每个都有语法定义和ftplugins(文件类型激活的插件)。提交ftplugin中的一个设置是textwidth=72。这样做是为了使git log的输出在标准宽度终端中看起来很好。如果你真的想要改变它,你可以去编辑插件,但我真的建议保留它。

该插件应位于<vim-directory>/vimXX/ftplugin/gitcommit.vimXX是版本号,例如72用于版本7.2,主要组件通常类似于/usr/share/vim

P.S。该插件还定义了一个命令DiffGitCached,它将打开要在预览窗口中提交的diff。方便!

答案 1 :(得分:4)

:verbose set textwidth? formatoptions?将告诉您这些选项的值以及最后设置它们的脚本。如果'textwidth'为非零并且'formatoptions'包含t设置,则只有在输入时才会对文字进行硬包装。 gitcommit文件类型插件(ftplugin/gitcommit.vim)可能正在更改其中一个或两个选项,因为您启用了文件类型插件(:filetype显示plugin:ON)。

答案 2 :(得分:1)

部分答案,也许有帮助......

根据ps aux,git使用以下命令启动vim:

vim .git/COMMIT_EDITMSG

这会触发语法模式gitcommit,该模式位于我的Ubuntu系统中

/usr/share/vim/vimcurrent/syntax/gitcommit.vim

并从

加载
/usr/share/vim/vimcurrent/filetype.vim

答案 3 :(得分:1)

FWIW,我遇到了类似的问题 - Vim在.txt文件中禁用了我的textwidth设置,因为其中一个被调用的文件类型插件有“formatoptions - = t”行

我没有编辑插件(这让我感到不舒服),而是通过在我的〜/ .vimrc文件中添加“:filetype plugins off”行来规避问题。解决方案详见此处 - http://peox.net/articles/vimconfig.html

(我原本以为这个问题与git有关,但是在非git目录中测试后我发现它是由于.txt文件扩展名。)