Using vim for git commit messages broken after updating janus
Solution 1
After a bit of googling, it turns out that the answer is to run the following:
git config --global core.editor $(which vim)
Solution 2
Nat Ritmeyer has given the right solution. I will give you the cause.
As Steve Tooke explained, hiding your ~/.vimrc
or explicitly telling git
to use the complete path to vim
solves the problem. However, he ends with "I’d still like to get to the root of the problem".
Try this:
- Start a
git commit
to get yourself into avim
editor. - Hit
<CTRL> + Z
to stop the process and drop back to the TTY -
Do a
ps
and notice for your TTY (whose number you get with thetty
command) there is something like...$ tty /dev/ttys005 $ ps PID TTY TIME CMD 17547 ttys005 0:00.15 -bash 65126 ttys005 0:00.02 git commit 65127 ttys005 0:00.10 vi .git/COMMIT_EDITMSG $ which vi /usr/bin/vi $ ll /usr/bin/vi lrwxr-xr-x 1 root wheel 3 Oct 3 17:40 /usr/bin/vi -> vim $ jobs [1]+ Stopped git commit
Get back to your vim process with
fg %1
(or what ever stopped job number yourgit commit
is listed as).
What that shell output tells us is...
- I was using ttys005
- On the TTY
bash
calledgit
andgit
calledvi
- The full path of
vi
is/usr/bin/vi
- The
vi
command is a symlink tovim
- Calling
<CTRL> + Z
stopped thegit commit
command and it was #1 in the job stack.
So, vi is the same command as vim?!?! Yes, but vim
notices that its argv[0]
was vi
and runs in compatible mode. This can cause problems depending on what is in your .vimrc
.
The best solution is to tell git to use vim, but I suggest you don't assume that your vim path is the same as everyone elses (maybe you installed via brew install vim
)
git config --global core.editor $(which vim)
Solution 3
This could be a plugin or something in your .vimrc file. The best way to load vim in a safe mode for editing commit messages is to use:
git config --global core.editor '/usr/bin/vim -f -u NONE'
Solution 4
I faced the same problem every time I fetched from remote repo and merged it with another branch.
Typing this in terminal fixed it for me
git config --global core.editor $(which vim)
Nat Ritmeyer
Test Automation Consultant See LinkedIn Profile for details. Author of Open Source Test Automation Software SitePrism - ruby gem for allowing the use of the Page Object Model pattern in Ruby/Capybara tests Bewildr - ironruby gem for UI testing of MS WPF apps Yarjuf - Yet Another RSpec JUnit Formatter (for Jenkins/Hudson)
Updated on June 09, 2022Comments
-
Nat Ritmeyer almost 2 years
After updating the janus vim distribution there appears to be a problem with using vim for commit messages. The best example of this is when doing a
git pull
to get someone else's changes. The vim editor is displayed, I type my commit message, I enter :wq but instead of the commit working, I get the following error message:error: There was a problem with the editor 'vi'. Not committing merge; use 'git commit' to complete the merge.
I then have to manually commit :(
How do I get git to play nicely with vim?
-
Bradley Flood over 9 years
-
Bodhi about 8 yearsfor an explanation, see vimdoc.sourceforge.net/htmldoc/starting.html#vim-arguments Mr Wilde is suggesting running
vim
in the "foreground", staying attached to the git process, and without avimrc
config file (no plugins) This did fix the issue I came here for, but introduced others, since this results in a very limited form ofvim