8

I've noticed that git seems to use different vim settings any time I'm writing a commit message. I have the git+svn install off Macports, and I've checked the $MYVIMRC variable: it's set to the correct file. Still, every time I go to commit a message I have a restriction on 80 characters per line, case sensitive search, and none of the plugins I've installed.

It's probably something silly. Would appreciate a pointer as to what it is.

EDIT: Actually I just checked: my plugins work. It's only the column width of 80 chars that miraculously comes alive when I type out commit messages.

7
  • Are you sure your editor is set to Vim? Git could be using a different Vi implementation. Commented Aug 11, 2010 at 15:03
  • Actually I just checked: my plugins work. It's only the column width of 80 chars that miraculously comes alive when I type out commit messages. And yes, my core.editor is the same vim I'm using for everything else. Commented Aug 11, 2010 at 15:10
  • 2
    This does not belong on superuser. Read the FAQ: SO is the place for questions about "software tools commonly used by programmers". Who commonly uses git and vim? Commented Aug 11, 2010 at 15:23
  • @mitjak: Sorry, that was directed at the mod who voted to migrate this to superuser. Forgot you can't see that! Commented Aug 11, 2010 at 15:27
  • Thanks for the responses! You guys are all correct! I don't know which answer to mark heh. Commented Aug 11, 2010 at 15:28

4 Answers 4

15

That's not a bug, it's a feature!

Vim knows about a lot of filetypes - including git commits (and interactive rebases, and config...). There are syntax definitions and ftplugins (filetype-activated plugins) for each of these. One of the settings in the commit ftplugin is textwidth=72. This is done so that the output of git log will look good in a standard-width terminal. If you really want to change it, you could go edit the plugin, but I'd really recommend keeping it.

The plugin should be in <vim-directory>/vimXX/ftplugin/gitcommit.vim. The XX is the version number, e.g. 72 for version 7.2, and the leading component is generally something like /usr/share/vim.

P.S. The plugin also defines a command DiffGitCached, which will open the diff to be committed in a preview window. Handy!

Sign up to request clarification or add additional context in comments.

9 Comments

If you want to override the setting, then you should do so in ~/.vim/after/ftplugin/gitcommit.vim, not by editing the system file. See vimdoc.sourceforge.net/htmldoc/options.html#after-directory
@jamessan: True. Fortunately in this case you don't have to worry about figuring out what value to restore the option to, as the ftplugin only modifies it if it's set to zero. (I hadn't read the plugin carefully enough to notice that the first time, and thought there'd be no way to restore.)
@Jefromi: What would need to be restored?
@jamessan: It's not a boolean. Suppose you set it to 100, and the plugin sets it to 72. How would would the after ftplugin know what to set it back to? (But like I said, not a problem in this case.)
@jamessan Strange: funkyimg.com/u2/405/385/…
|
4

:verbose set textwidth? formatoptions? will tell you the values of these option and what script last set them. Text is only hard-wrapped while typing if 'textwidth' is non-zero and 'formatoptions' contains the t setting. It's likely that the gitcommit filetype plugin (ftplugin/gitcommit.vim) is changing one or both of these options because you have filetype plugins enabled (:filetype shows plugin:ON).

Comments

1

Partial answer, maybe helpful...

According to ps aux, git starts vim with this command:

vim .git/COMMIT_EDITMSG

This triggers the syntax mode gitcommit, which on my Ubuntu system lives in

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

and is loaded from

/usr/share/vim/vimcurrent/filetype.vim

1 Comment

There's not just syntax - there's an ftplugin!
1

FWIW, I had a similar problem -- Vim was disabling my textwidth setting in .txt files because one of the filetype plugins being called had the line "formatoptions -=t"

Instead of editing the plugins (which made me uncomfortable), I circumvented the problem by adding the line ":filetype plugins off" to my ~/.vimrc file. The solution was detailed here - http://peox.net/articles/vimconfig.html

(I originally thought the problem was git-related, but after testing in a non-git directory I found it was due to the .txt file extension.)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.