如何让Git使用我选择的编辑器进行提交?

时间:2010-04-08 00:28:47

标签: git vim emacs editor commit-message

我更愿意在Vim中编写提交消息,但它在Emacs中打开它们。

如何配置Git以始终使用Vim?请注意,我想在全球范围内执行此操作,而不仅仅是针对单个项目。

29 个答案:

答案 0 :(得分:3058)

如果你想为Git设置编辑器 ,那么(你不需要两者):

  • 在您的Git配置中设置core.editorgit config --global core.editor "vim"
  • 设置GIT_EDITOR环境变量:export GIT_EDITOR=vim

如果要为Git 以及其他程序设置编辑器,请设置标准化的VISUALEDITOR环境变量*:

export VISUAL=vim
export EDITOR="$VISUAL"

*不一定需要设置两者,但有些程序可能不会使用更正确的VISUAL。请参阅VISUAL vs. EDITOR


对于Sublime Text : 将其添加到.gitconfig--wait很重要。 (它允许在sublime中键入文本,并等待保存/关闭事件。

[core]
    editor = 'subl' --wait

'subl'可以替换为可执行文件的完整路径,但通常在正确安装时可用。

答案 1 :(得分:531)

复制粘贴:

git config --global core.editor "vim"

如果您想知道自己在做什么。来自man git-commit

  

环境和配置变量

     

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

答案 2 :(得分:171)

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

答案 3 :(得分:59)

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

  

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

Sublime无法保持专注。

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

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

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

答案 4 :(得分:52)

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

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

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

答案 5 :(得分:23)

使Visual Studio代码(vscode)成为您的默认git编辑器

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

答案 6 :(得分:22)

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

git config --global core.editor "pico"

或者

export VISUAL=pico
export EDITOR=pico

答案 7 :(得分:17)

将Sublime Text 2设置为Mac OSX 10中的Git提交编辑器

运行此命令:

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

或者只是:

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

答案 8 :(得分:16)

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

git config --global core.editor vim

答案 9 :(得分:15)

Atom作为你的git编辑器

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

需要将Atom配置为从命令行运行以使其工作:

     

OS X :从Atom安装shell命令:菜单栏>原子>   安装Shell命令

     

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

答案 10 :(得分:10)

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

git config --global core.editor notepad.exe

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

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

编辑:或者,更轻松地从打开的记事本窗口中删除所有内容并点击保存。 (感谢mwfearnley的评论!)

我认为对于小写,例如提交消息,记事本服务最好,因为它很简单,有窗口,立即打开。当你有大量的插件和东西时,即使是你的崇高也可能需要一两秒才能被解雇。

答案 11 :(得分:9)

对于emacs用户

.emacs

(server-start)

shellrc

export EDITOR=emacsclient

答案 12 :(得分:7)

Sublime Text 3作为git编辑器的最佳设置(Windows& Linux说明):

要在Windows中按照这些说明操作,请确保已安装git for Windows。在Windows中,我喜欢使用Git BASH,以便感觉更像Linux。

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

1。创建一个Sublime Text项目,其中包含我们要用来编辑git commit消息的设置

打开Sublime Text并转到" File" - > "新窗口"创建一个新的匿名项目。转到"项目" - > "将项目另存为......"并选择一个地方来保存它。 在Linux中我将其保存在我的Linux主目录中,文件名为.gitconfig.sublime-project。因此,它的路径是:~/.gitconfig.sublime-project在Windows 中也将其保存在您的主目录中,例如:C:\Users\MY_USER_NAME\.gitconfig.sublime-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等到你继续之前关闭文件。只要git打开Sublime,--project行就可以告诉Sublime Text您想要打开哪个项目。

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

对于Windows:

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

(可选:在Git BASH中创建subl别名):

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

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

这将创建一个名为subl的Git BASH别名,我们现在可以在Git BASH for Windows中使用它来轻松打开Sublime。此步骤不是必需的,但对于一般的Git BASH使用它是有用的。现在,您可以在Git BASH中调用subl .,以在当前目录中打开一个新的Sublime项目。

<强>(强制性):

编辑主目录中的.gitconfig文件:C:\Users\MY_USER_NAME\.gitconfig,向其中添加以下内容。请注意上面Linux指令的细微更改:

[core]
  editor = 'C:/Program Files/Sublime Text 3/subl.exe' --project ~/.gitconfig.sublime-project --wait
  • 请注意,您必须指定Sublime Text可执行文件的完整路径。 请注意斜杠的方向!使用/ NOT \分隔路径名中的文件夹! (感谢VonC for helping me see this)。
  • 我们为Git BASH制作的subl别名在这里不起作用,因此您无法像在Linux示例中那样使用它,而是必须指定整个路径,如图所示上方。
  • 但是,~符号仍可用于访问Windows主目录。

2.5。 (可选)安装&#34; Git&#34;打包到Sublime Text 3。

这为您提供了git commit消息的语法突出显示,以及对git blame(我在Sublime Text中经常使用)或git commit等其他git命令的访问权限。 #39;在Sublime Text中使用,因为我更喜欢一般git流的命令行,正如我在下面的评论中提到的这个答案)。

安装软件包:首先,确保安装了“软件包控制”。接下来,按 Ctrl + Shift + P (与工具→命令选项板相同)并键入“Package Control:Install Package”的全部或部分内容,然后按Enter键。在出现的搜索框中,搜索包&#34; Git&#34;然后按Enter键或单击它以自动安装它。

安装完成后, Ctrl + Shift + P 然后搜索&#34; git&#34;将调出您可以在Sublime Text内部使用的git命令,例如git blame

3。使用它

现在,当您从命令行开始正常呼叫git commit时,Sublime Text将打开我们上面创建的.gitconfig.sublime-project,并使用该项目的设置!当你输入一个段落时,你会注意到它超出了我们设置的标尺,因为软自动换行是关闭的。 要在每行末尾通过自动插入的硬返回强制进行硬包装,请将光标放在要自动换行的长行上,然后按 Alt + Q 现在它将在72个字符处进行硬包装/硬折叠,这是我们在项目设置中设置的#c; &#34;标尺&#34;上面的参数。

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

完成!

答案 13 :(得分:5)

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

Github 所链接的资源很可能会保持最新状态,即使编辑人员的更新(包括此问题)没有得到更新时,更新编辑器也是如此。

Associating Text Editors with git

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

记事本++:
git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

崇高文字:
git config --global core.editor "'c:/Program Files/sublime text 3/subl.exe' -w"

原子:
git config --global core.editor "atom --wait"

以上命令假定您的编辑器已安装在Windows计算机的默认目录中。

这些命令基本上会将双引号之间的文本添加到主目录中的.gitconfig
在Windows计算机上,主目录可能是C:\Users\your-user-name,其中your-user-name是您的登录名。
在命令行中,您可以通过输入cd ~进入此目录。

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

如果您使用的是其他编辑器,请使用上述任一方法替换为编辑器的路径。 (并希望不需要使用标记就可以达到最佳使用效果。)

答案 14 :(得分:3)

Mvim作为你的git编辑器

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

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

答案 15 :(得分:2)

对于希望将neovim与Windows的Linux子系统一起使用的Windows用户:

git config core.editor "C:/Windows/system32/bash.exe --login -c 'nvim .git/COMMIT_EDITMSG'"

这是一个万无一失的解决方案,因为它不处理交互式变基(例如)。非常欢迎改进!

答案 16 :(得分:1)

有一个你可以使用的命令列表,但对于 vs 代码使用这个

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

这是所有编辑器的链接:https://git-scm.com/book/en/v2/Appendix-C%3A-Git-Commands-Setup-and-Config

答案 17 :(得分:1)

在适用于TextMate的macOS Big Sur(11.0)beta上:没有任何环境变量选项起作用。 (设置所有三个:GIT_EDITOR,VISUAL和EDITOR。)

最后在git中设置了global core.editor,它起作用了:
git config --global core.editor "~/bin/mate -w"

答案 18 :(得分:1)

对于Windows,Neovim:

# .gitconfig

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

答案 19 :(得分:1)

仅仅因为我来这里是为了寻求一次性解决方案(在我的情况下,我通常使用vim,但是这一次我想使用VS Code)是针对单个命令的,其他人可能想知道好吧:

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

这是我的git / hub版本,仅供参考:

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

答案 20 :(得分:1)

在使用git-review时,我不得不修改sequence.editor的值才能进行交互式变基(git rebase -i -p):

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

gvim要求:apt install vim-gtk

参考文献

答案 21 :(得分:1)

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

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

此外,请确保您的“TextWrangler&gt;偏好设置&gt;应用程序&gt;当TextWrangler变为活动时:”设置设置为“不执行任何操作”

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

说明:

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

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

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

有关详细信息,请参阅Mac终端应用中的man open

答案 22 :(得分:1)

试试EDITOR=vim git commit

或者您可以在bashrc中将编辑器设置为vim export EDITOR=vim

答案 23 :(得分:0)

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

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

答案 24 :(得分:0)

对于IntelliJ用户

当我尝试git rebase时,出现以下错误: '提示:等待您的编辑器关闭文件...代码-n -w:代码:找不到命令错误:编辑器'code -n -w'存在问题。

当我尝试将IntelliJ与Git关联时,出现了相同的错误: enter image description here

问题是我的环境PATH变量中没有添加命令 code 。而且我不想从终端使用Visual Studio Code。这就是为什么它提示“找不到命令”的原因。我通过删除

解决了这个问题

编辑器=代码-n -w

在我的.gitconfig文件的核心部分中

。 Git再次正常工作。

答案 25 :(得分:0)

对于EmEditor用户

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

git config --global core.editor "emeditor.exe -sp"

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

答案 26 :(得分:0)

对于MAC,BBEdit:

首先,打开BBEdit,单击BBEdit徽标,然后选择“安装命令行工具”。

然后从命令行

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

答案 27 :(得分:-1)

对于想要使用Kinesics文本编辑器的Windows用户

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

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

在git提示符下输入:

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

答案 28 :(得分:-1)

对于Textmate用户

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

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