我如何让git使用我选择的编辑器来编辑提交信息?

3300

如何全局配置git在提交信息时使用特定的编辑器(例如vim)?


261
如何让 Git 默认使用 Vim 编辑器来编写提交信息? - Michael Burr
4
相关(可能是重复的)问题:如何在Windows上设置编辑器以与Git一起使用? - Stevoisiak
5
EMACS (微笑) 有什么问题吗? - Shawn Eary
真正的问题是,地球上有哪个程序员使用'gedit'?为什么它是Ubuntu的默认编辑器?只是因为我知道如何设置ssh X-tunnel吗?我一直使用emacs,但是从shell中启动vim来输入2-20行的文本是有道理的。在emacs中,使用vc-mode。默认应该是vim,3300多票证明了这一点。 - undefined
34个回答

4446

设置Git的默认编辑器

选择一个方法:

  • 在Git配置中设置core.editor

  • git config --global core.editor "vim"
    
  • 设置环境变量GIT_EDITOR

  • export GIT_EDITOR=vim
    

设置所有程序的默认编辑器

设置标准化的VISUALEDITOR环境变量*:

export VISUAL=vim
export EDITOR="$VISUAL"

注意:设置两个变量并不一定是必需的,但是有些程序可能不使用更正确的VISUAL。参见VISUALEDITOR之间的区别。


解决兼容性问题

有些编辑器需要一个--wait标志,否则它们将打开一个空白页面。例如:

  • Sublime Text(如果正确设置;或者在subl的位置使用可执行文件的完整路径):

    export VISUAL="subl --wait"
    
  • VS Code(在添加了shell command之后):

  • export VISUAL="code --wait"
    

115
EDITOR环境变量的优势在于许多其他程序也会尊重它。 - Boojum
20
注意,git config --global 会写入你个人的(每个用户的)Git配置文件。在Unix上,该文件路径为 ~/.gitconfig。因此,这将为你所有的代码仓库进行配置。 - Jakub Narębski
62
你可以尝试修改最后一次提交信息来测试是否成功更改了它。使用命令 git commit --amend - Marco M.
15
如果你在Windows中选择#1选项,而编辑器的路径中包含空格(比如在Program Files下),那么请在双引号内加入单引号。例如:"'C:/Program Files (x86)/Whatever/App.exe'" - 这对有些人来说很明显,但对我来说不是! - Pablissimo
5
-w 参数不是必需的;而 -w {scriptout} 参数会保存您在编辑过程中键入的所有字符,以便以后重放。也许您将其与 -f 混淆了,当调用 Vim 的 GUI 版本时需要使用 -f 参数。也就是说,如果您使用 mvim,则应该指定编辑器为 mvim -f 而不是 mvim - Rory O'Kane
显示剩余13条评论

805

运行:

git config --global core.editor "vim"

man git-commit:

环境变量和配置变量

用于编辑提交日志消息的编辑器将从 GIT_EDITOR 环境变量、core.editor 配置变量、VISUAL 环境变量或 EDITOR 环境变量(按此顺序)中选择。


4
顺便提一下,上面所说的对于CVS和SVN是正确的,我猜其他版本控制也是一样的。 - armandino
6
是的,其他人可能会使用“VISUAL”或“EDITOR”,但他们肯定不会使用“GIT_EDITOR”或“core.editor”。 - Mark Rushakoff
谢谢澄清,马克。我指的是 EDITOR 变量。我相信如果定义了 GIT_EDITOR,则会简单地覆盖它。 - armandino
8
理论上来说,如果我同时使用 svn 和 git,设置 $VISUAL 或 $EDITOR 可以成为默认的最佳解决方案!请参考这个链接:http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.3.2 - brasskazoo
12
为了完整起见,core.editor 意味着在文件中 [core] editor = ... 中的编辑器。 - JRG
默认情况下,Git 使用您设置为默认文本编辑器的任何内容($VISUAL 或 $EDITOR),否则会退回到 vi 编辑器来创建和编辑提交和标签消息。这个顺序难道不是与您从“man git-commit”中引用的相反吗? - Nick Volynkin

217
在Ubuntu和Debian上(感谢@MichielB),改变默认编辑器也可以通过运行以下命令来实现:
sudo update-alternatives --config editor

这将会提示以下内容:
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: 

8
在 Debian 上这也可以使用,谢谢!默认是 pico - 噢。 - MichielB
4
当然它在Debian上可行;这是一个Debian特性,就像大多数东西一样(哦,有争议!),Ubuntu只是继承了它。 Debian的alternatives系统是管理支持的程序类型默认设置的更简单的方法。 参考链接:https://www.debian-administration.org/article/91/Using_the_Debian_alternatives_system - underscore_d
@haziz:在我的系统上,列出的选项之一是Emacs(其他包括各种版本的Vim,以及nano和ed)。 - Dennis Williamson
3
update-alternatives 命令会显示已安装的任何编辑器。Koen 只是没有安装 Emacs。 - Major
当我在我的Ubuntu 16.04(我猜18.04也是如此)上安装vim-gtk3时,默认设置会自动切换到vim,之前默认为nano。因此,我认为这可能是为什么有些人从未需要运行此命令并且它按预期工作的原因。 - Alexis Wilke
显示剩余2条评论

66
在Windows 7中,添加“Sublime”编辑器时仍然出现错误:

由于提交消息为空而中止提交。

Sublime无法保持焦点。

为了解决这个问题,我打开了c:/users/username/文件夹中的.gitconfig文件,并在单引号外添加了以下带有--wait选项的行。

[core]
      editor = 'F:/Program Files/Sublime Text 2/sublime_text.exe' --wait

希望对于遇到Sublime类似问题的人有所帮助。

不错!谢谢Anmol,我遇到了提交空消息的问题。 - ddavison
你为什么想要使用Sublime进行Git提交? - Adam Fowler
18
任何用于Git提交的编辑器主要用于添加多行注释,而Sublime是许多开发人员因各种原因选择的程序员编辑器。人们通常有倾向性地使用一个编辑器进行大部分编码和其他工作。Sublime只是个人选择,它可以是任何编辑器。 - Anmol Saraf
1
不必手动编辑gitconfig,您可以使用以下命令:git config --global core.editor "'C:/Program Files/Sublime Text 3/subl.exe' --wait" - KayakinKoder

64

在Windows 7中,将编辑器设置为Notepad++

  • 打开任何文本编辑器。
  • 打开此文件:C:\ Users \ YOUR_USERNAME \ .gitconfig
  • 在底部添加此部分:

使用 64 位 Notepad++:
[core]
    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar

使用32位Notepad++:

[core]
    editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar
  • 保存并关闭文件。
  • 当您使用git提交时,只需写入git commit并按Enter。它会弹出Notepad++。
  • 在文件顶部编写您的提交消息,然后保存并关闭文件。完成!

11
如果Git似乎不知道你何时完成了文件的编辑,要么永远等待要么根本不等待,那么可能需要将至少-multiInst作为参数添加到Notepad++中,并可能需要添加-notabbar。这样做即可。请注意,不要改变原意。 - ErikE
5
为了在命令行中设置配置,我需要在单引号内部使用双引号,例如 >git config --global core.editor '"C:/Program Files (x86)/Notepad++/notepad++.exe"' - Josef
仍然为我打开普通记事本。 - Manza
@ErikE:谢谢,伙计!-multiInst-notabbar都是必需的。这个问题困扰了我几个小时。 - Technext
3
为了添加Notepad++参数,我必须这样做:editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar - 也就是说,在单引号之外加入参数。 - cropredy
显示剩余2条评论

49

要将Visual Studio Code (vscode) 设为默认的git编辑器:

git config --global core.editor "code --wait"

25

如果你和使用命令行的设计师一起工作,那么Pico是一个不错的选择,而且不需要掌握快捷键 ;)

git config --global core.editor "pico"

或者

export VISUAL=pico
export EDITOR=pico

23

将Atom设置为你的Git编辑器

git config --global core.editor "atom --wait"

为使上述操作生效,需要对Atom进行命令行配置:

OS X:从Atom菜单栏中安装shell命令:Atom > Install Shell Commands

Windows:无需操作-默认情况下atom已配置为可从命令行运行


VSCode用户:git config --global core.editor "code --wait" - Bar Horing

20

如何在Mac OSX 10上将Sublime Text 2设置为Git提交编辑器

运行以下命令:

$ git config --global core.editor "/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl"

或者只需:

$ git config --global core.editor "subl -w"

不知何故它没有将文本提交到git。我收到了“由于提交消息为空而中止提交”的错误提示。 - Mahendran
我使用第一个命令来设置SL。使用 cmd + S 然后使用 cmd + W 来关闭编辑器。 - Mahendran
2
Visual Studio Code 也支持 -w 参数。例如:$ git config --global core.editor "code -w"。很棒的东西。 - Automatico
备用答案在这里:https://dev59.com/RnE85IYBdhLWcg3w03Dz#48212377,附带Linux示例。 - Gabriel Staples

19
要使vim成为在ubuntu 20.04上git的默认编辑器,请运行以下命令:

sudo update-alternatives --config editor

git config --global core.editor vim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接