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


Run:

git config --global core.editor "vim"

来自man git commit:

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


设置Git的默认编辑器

选择一个:

在Git配置中设置core.editor:git-config—全局core.editor“vim”设置GIT_EDITOR环境变量:导出GIT_EDITOR=vim


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

设置标准化的VISUAL和EDITOR环境变量*:

export VISUAL=vim
export EDITOR="$VISUAL"

注意:不一定需要同时设置这两个,但某些程序可能不会使用更正确的VISUAL。参见视觉与编辑。


修复兼容性问题

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

Sublime文本(如果设置正确;或使用可执行文件的完整路径代替subl):export VISUAL=“subl--等待”VS代码(添加shell命令后):export VISUAL=“code--wait”


对于emacs用户

.emacs:

(server-start)

外壳:

export EDITOR=emacsclient

如果你正在使用命令行与设计师合作,那么Pico,而且不知道捷径;)

git config --global core.editor "pico"

Or

export VISUAL=pico
export EDITOR=pico

在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: 

在windows 7中,当添加“Sublime”编辑器时,它仍然给我一个错误:

由于提交消息为空,正在中止提交。

Sublime无法保持焦点。

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

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

希望对Sublime面临类似问题的人有所帮助。


在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"

在Windows 7中,将编辑器设置为记事本++

打开任何文本编辑器。打开此文件: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提交时,只需编写gitcommit并按Enter键。它将弹出记事本++。在文件顶部写入提交消息,然后保存并关闭文件。完成!


只需尝试EDITOR=vim-gitcommit。

或者可以通过在bashrc中导出EDITOR=vim将EDITOR设置为vim。


对于Textmate用户

这将在您想要编辑提交时打开Textmate编辑器。需要安装textmate命令行工具。

git-config--全局core.editor“mate-w”


Atom作为您的git编辑器

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

需要将Atom配置为从命令行运行,以使上述功能正常工作:OS X:从Atom安装shell命令:菜单栏>Atom>安装Shell命令Windows:不需要任何操作-默认情况下,atom配置为从命令行运行


Mvim作为您的git编辑器

与所有其他GUI应用程序一样,您必须使用wait标志启动mvim。

git config --global core.editor "mvim --remote-wait"

Windows:将记事本设置为默认的提交消息编辑器

git config --global core.editor notepad.exe

按Ctrl+S保存提交消息。要放弃,只需关闭记事本窗口而不保存。

如果您点击保存快捷方式,然后决定中止,请转到文件->另存为,在打开的对话框中,将“另存为类型”更改为“所有文件(*.*)”。您将看到一个名为“COMMIT_EDITMSG”的文件。删除它,然后关闭记事本窗口。

编辑:或者,更容易地从打开的记事本窗口中删除所有内容,然后单击保存。(感谢姆沃恩利的评论!)

我认为对于诸如提交消息之类的小记录,记事本是最好的,因为它很简单,有窗口,很快就能打开。当你有一大堆插件和东西时,甚至你的崇高也可能需要一两秒钟才能被激发起来。


对于Mac应用商店中TextWrangler的用户:

git config --global core.editor "open -n -W -a TextWrangler"

此外,确保“TextWrangler>首选项>应用程序>当TextWranger变为活动时:”设置设置为“不执行任何操作”

这适用于Mac应用商店中使用TextWrangler 5.0.2的OS X 10.11.4。

说明:

-n表示在新实例中打开。

-W表示在使用编辑文件的内容作为提交消息之前,等待应用程序退出。

-a TextWrangler表示使用TextWrangle应用程序打开文件。

有关详细信息,请在Mac终端应用程序中查看man open。


对于希望使用Kinetics文本编辑器的Windows用户

创建一个名为“k.sh”的文件,添加以下文本并放置在主目录(~)中:

winpty "C:\Program Files (x86)\Kinesics Text Editor\x64\k.exe" $1

在git提示符下键入:

git config --global core.editor ~/k.sh

要使Visual Studio代码(vscode)成为默认的git编辑器,请执行以下操作:

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

对于希望将neovim与Windows Subsystem For Linux一起使用的Windows用户:

git-config-core.editor“C:\Windows/system32/bash.exe--login-C'nvim.git/COMMIT_EDITMSG'”

这不是一个傻瓜式的解决方案,因为它不处理交互式的重新基础(例如)。非常欢迎改进!


Sublime Text 3或4作为Git编辑器的最佳设置(Windows和Linux说明):

要在Windows中遵循这些说明,请确保已安装Git for Windows。在Windows中,我喜欢使用GitBash,这样感觉更像Linux。

首先,我们想创建一个特殊的Sublime Text项目,这样我们就可以在Git调用编辑器时指定需要设置的特殊项目设置,以便在Git中进行编辑时更容易。例如,在大多数项目中,我通常将标尺设置为120个字符,但对于Git提交消息,我希望它是72个字符,这样当您调用gitlog或gitlg时,它很适合终端。


1.使用我们想要用于编辑Git提交消息的设置创建Sublime Text项目

打开Sublime文本并转到菜单“文件”→ “新建窗口”以创建新的匿名项目。转到菜单“项目”→ “将项目另存为…”并选择保存位置。在Linux中,我将其保存在我的Linux主目录中,文件名为.gitconfig.sublime-Project。因此,其路径为:~/.gitconfig.sublime-Project.在Windows中,也将其保存到主目录中。例如:C:\Users\my_USER_name\.gitconfig.seublime-Project现在转到菜单“项目”→ “编辑项目”以编辑项目设置。粘贴以下内容并保存设置。如果需要,对项目设置进行进一步编辑。

{
    // For folder settings help see here: https://www.sublimetext.com/docs/3/projects.html

    "folders":
    [

    ],

    "settings":
    {

        // Disables horizontal scrolling if enabled.
        // May be set to true, false, or "auto", where it will be disabled for
        // source code, and otherwise enabled.
        "word_wrap": false,

        // Set to a value other than 0 to force wrapping at that column rather than the
        // window width
        "wrap_width": 0,

        // Columns in which to display vertical rulers
        "rulers": [72, 50], //72 is recommended by git for commit message content, and 50 for commit titles

        // The number of spaces a tab is considered equal to
        "tab_size": 4,

        // Set to true to insert spaces when tab is pressed
        "translate_tabs_to_spaces": true,
    },

    "build_systems":
    [

    ]

}

2.设置Git使用的编辑器

现在我们需要通过编辑.gitconfig文件来设置Git使用的编辑器。

对于Linux:

您的用户副本将位于~/.gitconfig中。打开此文件并添加以下行。确保使用上面刚刚创建的Git项目的正确路径名!我正在使用~/.gitconfig.sublime-project。

[core]
    editor = subl --project ~/.gitconfig.sublime-project --wait

--wait很重要,因为它迫使Git等到您关闭文件后再继续。--project行很重要,它可以告诉Sublime Text,每当Git打开Sublime文本时,您希望打开哪个项目。

根据上面@digitaldreamer的回答(https://stackoverflow.com/a/2596835/4561887),“subl可以替换为可执行文件的完整路径,但[别名subl]通常在[Sublime]正确安装时可用。”

对于Windows:

对于Windows,首先阅读Linux说明了解背景信息。现在我们将做一些几乎相同的事情。

(可选:创建用于Git Bash的subl别名):

打开文本编辑器(例如记事本、记事本++、Sublime text、Geany等),并在主目录中创建一个名为“.bash_profile”的文件。因此,其路径将为:C:\Users\MY_USER_NAME\.bash_profile。将以下内容保存到其中:

alias subl="/c/Program\ Files/Sublime\ Text\ 3/subl.exe"

这将创建一个名为subl的GitBash别名,我们现在可以在GitBash for Windows中使用它,以便轻松打开Sublime文本。这一步骤不是必需的,但对于一般的GitBash使用来说很有用。现在你可以调用subl。,例如,在GitBash中,在当前目录中打开一个新的SublimeText项目。

(必填):

通过向主目录C:\Users\MY_USER_NAME\.gitconfig中添加以下内容来编辑.gitconfig文件:

[core]
  editor = 'C:/Program Files/Sublime Text 3/subl.exe' --project ~/.gitconfig.sublime-project --wait

请注意,必须指定Sublime Text可执行文件的完整路径。注意斜线的方向!使用/NOT\分隔路径名中的文件夹!(感谢VonC帮助我看到这一点)。我们为上面的GitBash创建的subl别名在这里不起作用,因此您不能像我们在Linux示例中那样使用它,而是必须如上所示指定整个路径。然而,~符号在这里仍然可以访问Windows主目录。


2.5.(可选)将“Git”包安装到Sublime Text 3中。

这为您提供了git提交消息的语法高亮显示,以及对其他git命令的访问,如git commit(我在Sublime Text中经常使用)或git commmit(我在Sublime Text没有使用,因为我更喜欢使用命令行来处理一般git流,正如我在下面的回答中所提到的)。

要安装软件包:首先,确保安装了“软件包控制”。接下来,按Ctrl+Shift+P(与工具相同→ Command Palette)并键入全部或部分“包控制:安装包”,然后按Enter键。在出现的搜索框中,搜索软件包“Git”,然后按Enter键,或单击它,自动安装它。

安装完成后,Ctrl+Shift+P然后搜索“git”将显示git命令,您现在可以在Sublime Text内部使用,例如git责备。


3.使用它

现在,例如,当您从命令行正常调用gitcommit时,SublimeText将打开到我们上面创建的.gitconfig.Sublime-project中,并带有该项目的设置!当你键入一个段落时,你会注意到它超出了我们设置的标尺,因为软换行已关闭。要通过在每行末尾自动插入硬回车来强制硬换行,请将光标放在想要自动换行的长行上,然后按Alt+Q。现在,它将以72个字符的长度硬换行/硬折叠,这是我们在上面项目设置的“标尺”参数中设置的。

现在,用Ctrl+S保存提交消息,然后用Ctrl+Shift+W退出(以完成git提交)。

完成!

相关:

Windows上使用Meld的Git合并工具https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles


这为找到这个问题的人提供了一个答案,他们可能希望链接vim以外的编辑器。

Github提供的链接资源很可能会在编辑更新时保持最新,即使SO(包括这个)上的答案不是这样。

将文本编辑器与git关联

Github的帖子准确地显示了各种编辑器在命令行中输入的内容,包括特定于每个编辑器的选项/标志,以使其与git配合得更好。

记事本++:git-config--global-core.editor“'C:/Program Files(x86)/Notepad++/nopad++.exe'-multeInst-notibbar-nosession-noPlugin”

Sublime文本:git-config--全局core.editor“'c:/Program Files\sublimitext 3/subl.exe'-w”

原子:git-config--全局core.editor“atom--等待”

上面的命令假设您的编辑器已安装在windows计算机的默认目录中。

这些命令基本上将双引号之间的文本添加到主目录中的.gitconfig。在windows计算机上,主页可能是C:\Users\您的用户名,其中您的用户名是您的登录名。在命令行中,您可以通过键入cd~来访问此目录。

例如,上面的命令将在[core]部分下面添加以下行,如下所示:[核心]editor='C:/Program Files\sublime text 3/subl.exe'-w

如果您有不同的编辑器,只需使用上述任一方法替换为编辑器的路径。(希望不需要任何标志来实现最佳使用。)


使用git review时,我必须修改sequence.editor值,以便能够进行交互式rebase(gitrebase-I-p):

git config --global sequence.editor "gvim"  # or whatever your prefer

gvim要求:apt-installvim-gtk

工具书类

#2944 Interactive Rebase失败,出现警告:“Vim:警告:输出不到终端”安装sjubar/rebase编辑器的部分


对于Mac OS X,使用TextEdit或自然环境编辑器编辑文本:

git config --global core.editor "open -W -n"

对于IntelliJ用户

当我尝试git rebase时,我遇到了以下错误:'提示:正在等待编辑器关闭文件。。。code-n-w:code:未找到命令错误:编辑器“code-n-w”存在问题

当我试图将IntelliJ与Git关联时,出现了同样的错误:

问题是我没有在环境PATH变量中添加命令代码。我不想在我的终端上使用Visual Studio代码。这就是为什么它提示“命令未找到”。我通过删除

编辑器=代码-n-w

从.gitconfig文件的核心部分。Git再次正常工作。


只是因为我来这里是为了寻找一个一次性的解决方案(在我的情况下,我通常使用vim,但这一次我想使用VS代码),其他人可能也想知道:

GIT_EDITOR='code -w' git rebase -i …

这是我的git/hub版本,仅用于上下文:

git version 2.24.2 (Apple Git-127)
hub version 2.14.1

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

git config --global core.editor vim

对于EmEditor用户

要将EmEditor设置为Git的默认文本编辑器,请打开Git Bash,然后键入:

git config--全局core.editor“emeditor.exe-sp”

需要EmEditor v19.9.2或更高版本。


在macOS Big Sur(11.0)测试版上,TextMate:所有环境变量选项都无效。(设置所有三个:GIT_EDITOR、VISUAL和EDITOR。)

最后,在git中设置全局core.editor,这起到了作用:git-config--全局core.editor“~/bin/mate-w”


对于Windows,Neovim:

# .gitconfig

[core]
    editor='C:/tools/neovim/Neovim/bin/nvim-qt.exe'

对于MAC,BBEdit:

首先,打开BBEdit,单击BBEdit徽标,然后选择Install Command Line Tools。

然后从命令行,

git config --global core.editor "BBEdit -w"

有一个命令列表,您可以使用,但对于vs代码,请使用此命令

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

这是所有编辑器的链接:https://git-scm.com/book/en/v2/Appendix-C%3A-Git命令设置和配置


在Git配置中设置core.editor:

git config --global core.editor "nano"

设置GIT_EDITOR环境变量:

export GIT_EDITOR=nano