我注意到git似乎在我编写提交消息时使用不同的vim设置。我在Macports上安装了git+svn
,我检查了$MYVIMRC
变量:它设置为正确的文件。尽管如此,每次我提交一条消息时,我都会限制每行80个字符,区分大小写搜索,并且没有安装任何插件。
这可能是愚蠢的事。会很感激指出它是什么。
编辑:其实我刚检查过:我的插件工作正常。当我输出提交消息时,只有80个字符的列宽才奇迹般地活跃起来。答案 0 :(得分:15)
这不是一个错误,这是一个功能!
Vim知道很多文件类型 - 包括git提交(以及交互式rebase和config ...)。每个都有语法定义和ftplugins(文件类型激活的插件)。提交ftplugin中的一个设置是textwidth=72
。这样做是为了使git log的输出在标准宽度终端中看起来很好。如果你真的想要改变它,你可以去编辑插件,但我真的建议保留它。
该插件应位于<vim-directory>/vimXX/ftplugin/gitcommit.vim
。 XX
是版本号,例如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文件扩展名。)