How do I make git use the editor of my choice for commits?
I would prefer to write my commit messages in Vim, but git is opening them in Emacs.
How do I configure git to always use Vim? Note that I want to do this globally, not just for a single project.
If you want to set the editor only for Git, do either (you don’t need both):
- Set
core.editor
in your Git config:git config --global core.editor "vim"
OR
- Set the
GIT_EDITOR
environment variable:export GIT_EDITOR=vim
If you want to set the editor for Git and also other programs, set the standardized VISUAL
and EDITOR
environment variables*:
export VISUAL=vim
export EDITOR="$VISUAL"
NOTE: Setting both is not necessarily needed, but some programs may not use the more-correct VISUAL
. See VISUAL
vs. EDITOR
.
Some editors require a --wait
flag, or they will open a blank page. For example:
-
Sublime Text (if correctly set up; or use the full path to the executable in place of
subl
):export VISUAL="subl --wait"
-
VS Code (after adding the shell command):
export VISUAL="code --wait"
Copy paste this:
git config --global core.editor "vim"
In case you'd like to know what you're doing. From man git-commit
:
ENVIRONMENT AND CONFIGURATION VARIABLES
The editor used to edit the commit log message will be chosen from the
GIT_EDITOR
environment variable, thecore.editor
configuration variable, theVISUAL
environment variable, or theEDITOR
environment variable (in that order).
On Ubuntu and also Debian (thanks @MichielB) changing the default editor is also possible by running:
sudo update-alternatives --config editor
Which will prompt the following:
There are 4 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
0 /bin/nano 40 auto mode
1 /bin/ed -100 manual mode
2 /bin/nano 40 manual mode
* 3 /usr/bin/vim.basic 30 manual mode
4 /usr/bin/vim.tiny 10 manual mode
Press enter to keep the current choice[*], or type selection number:
In windows 7, while adding the "Sublime" editor it was still giving me an error:
Aborting commit due to empty commit message.
Sublime was not able to keep the focus.
To fix this I opened the .gitconfig file in c:/users/username/ folder and added the following line with --wait option outside the single quotes.
[core]
editor = 'F:/Program Files/Sublime Text 2/sublime_text.exe' --wait
Hope its helpful to somebody facing similar issue with Sublime.
In Windows 7, setting editor to Notepad++
- Open any text editor.
- Open this file:
C:\Users\YOUR_USERNAME\.gitconfig
- Add this section to the bottom:
For 64 bit Notepad++ use:
[core]
editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar
For 32 bit Notepad++ use:
[core]
editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar
- Save and close the file.
- When you're committing with git, just write
git commit
and pressEnter
. It will pop open Notepad++. - Write your commit message at the top of the file, and save and close the file. Done!