如何设置编辑器以在 Windows 上使用 Git?
Posted
技术标签:
【中文标题】如何设置编辑器以在 Windows 上使用 Git?【英文标题】:How can I set up an editor to work with Git on Windows? 【发布时间】:2010-09-05 20:24:44 【问题描述】:我正在试用 Windows 上的 Git。我到了尝试“git commit”的地步,但出现了这个错误:
终端是哑的,但没有视觉,也没有 EDITOR 定义。请提供 使用 -m 或 -F 选项的消息。
所以我发现我需要一个名为 EDITOR 的环境变量。没问题。我将其设置为指向记事本。这几乎奏效了。默认提交消息在记事本中打开。但记事本不支持裸换行。我出去得到了Notepad++,但我不知道如何将 Notepad++ 设置为%EDITOR%
,使其能够按预期与 Git 一起使用。
我没有嫁给 Notepad++。在这一点上,我不介意我使用什么编辑器。我只想能够在编辑器中输入提交消息,而不是命令行(使用-m
)。
那些在 Windows 上使用 Git 的人:您使用什么工具来编辑提交消息,以及您需要做什么才能使其正常工作?
【问题讨论】:
TLDR:在编辑器可执行文件的路径周围加上单引号 可能没有帮助,但 FWIW,我只是使用普通记事本。我什么也没做。默认情况下它只是开箱即用...... 2015 年 9 月更新:一个简单的git config core.editor notepad
现在就足够了。见my updated answer below。
请注意,JEdit 不是 git 的合适编辑器。即使是多个文件,JEdit 也只会打开一个实例。如果它已经打开,git 会导致它打开一个新文件,但是你必须在 git 继续之前完全关闭 JEdit。没有命令行选项可以让 JEdit 打开一个单独的实例来编辑提交消息。
如果有人喜欢 Sublime Text 3,以下是我如何为 Windows 和 Linux 配置它的说明:Best settings for Sublime Text 3 as your git editor (Windows & Linux instructions)。 @yoyo,用于使用任何文本编辑器的 TLDR:在编辑器可执行文件的路径周围加上单引号,并在 Windows 可执行文件的路径名中使用正斜杠 (/) 而不是反斜杠 (\)。
【参考方案1】:
我很难让 Git 与 WordPad、Komodo Edit 以及我给它的几乎所有其他编辑器合作。大多数打开编辑,但 Git 显然不会等待保存/关闭发生。
作为拐杖,我一直在做即
git commit -m "Fixed the LoadAll method"
让事情保持运转。它倾向于使我的提交消息比它们应该的要短一些,但显然在 Windows 版本的 Git 上还有一些工作要做。
GitGUI 也没有那么糟糕。这需要一点定位,但之后,它的效果相当不错。
【讨论】:
【参考方案2】:Notepad++ 工作得很好,虽然我选择坚持使用记事本、-m,甚至有时是内置的“编辑”。
您在使用 Notepad++ 时遇到的问题与 Git 如何启动编辑器可执行文件有关。我对此的解决方案是将环境变量 EDITOR
设置为批处理文件,而不是实际的编辑器可执行文件,它执行以下操作:
start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*
/WAIT
告诉命令行会话暂停,直到应用程序退出,因此您可以在 Git 愉快地等待您的同时编辑您喜欢的内容。 %* 将批处理文件的所有参数传递给 Notepad++。
C:\src> echo %EDITOR%
C:\tools\runeditor.bat
【讨论】:
我无法让它在 powershell 下工作。这种方法(***.com/questions/10564/…)虽然效果很好。【参考方案3】:Vim/gVim 很适合我。
>echo %EDITOR%
c:\Vim\Vim71\vim.exe
【讨论】:
【参考方案4】:如果路径中有空格,Git 似乎找不到编辑器。因此,您必须将Patrick's answer 中提到的批处理文件放入非空白路径中。
【讨论】:
这种格式适用于带空格的路径: git config --global core.editor "\"c:\Program Files\textpad 5\textpad.exe\"" 所以它可能对你很实用避免创建批处理文件【参考方案5】:2015 年 9 月更新(6 年后)
last release of git-for-Windows (2.5.3) 现在包括:
通过配置
git config core.editor notepad
,用户can now usenotepad.exe
as their default editor。 配置git config format.commitMessageColumns 72
将被记事本包装器拾取,并在用户编辑提交消息后对其进行换行。
见commit 69b301bJohannes Schindelin (dscho
)。
并且 Git 2.16(2018 年第一季度)将显示一条消息,告诉用户它在生成编辑器时正在等待用户完成编辑,以防编辑器 打开一个隐藏的窗口或某个不明显的地方,用户得到 丢了。
请参阅commit abfb04d(2017 年 12 月 7 日)和Lars Schneider (larsxschneider
)commit a64f213(2017 年 11 月 29 日)。
帮助者:Junio C Hamano (gitster
)。(由 Junio C Hamano -- gitster
-- 合并于 commit 0c69a13,2017 年 12 月 19 日)
launch_editor()
:表示Git等待用户输入当图形
GIT_EDITOR
由打开的 Git 命令生成时 并等待用户输入(例如“git rebase -i
”),然后是编辑器窗口 可能会被其他窗口遮挡。 用户可能会盯着 原来的 Git 终端窗口,甚至没有意识到他/她需要 在 Git 可以继续之前与另一个窗口进行交互。给这个用户 Git 似乎挂起。在原文中打印一条 Git 正在等待编辑器输入的消息 终端并在编辑器返回时摆脱它,如果终端 支持擦除最后一行
原答案
我刚刚用 git 版本 1.6.2.msysgit.0.186.gf7512 和 Notepad++5.3.1 测试过
我更喜欢不必须设置一个EDITOR变量,所以我尝试了:
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"
这总是给:
C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.
如果我定义一个 npp.bat 包括:
"c:\Program Files\Notepad++\notepad++.exe" %*
然后我输入:
C:\prog\git>git config --global core.editor C:\prog\git\npp.bat
它只适用于 DOS 会话,但不适用于 git shell。
(不是core.editor的配置机制,里面有“start /WAIT...
”的脚本是不行的,只能打开一个新的DOS窗口)
Bennett's answer 提到了避免添加脚本的可能性,而是直接引用程序本身在单引号之间。注意斜线的方向!使用/
而不是\
来分隔路径名中的文件夹!
git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
或者,如果您使用的是 64 位系统:
git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
但我更喜欢使用脚本(见下文):这样我就可以使用不同的路径或不同的选项,而无需再次注册git config
。
实际的解决方案(使用脚本)是意识到:您在配置文件中引用的实际上是一个 shell (/bin/sh
) 脚本,而不是 DOS 脚本。
那么起作用的是:
C:\prog\git>git config --global core.editor C:/prog/git/npp.bat
C:/prog/git/npp.bat
:
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"
或
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"
使用该设置,我可以从 DOS 或 Git Shell 执行“git config --global --edit
”,或者我可以从 DOS 或 Git Shell 执行“git rebase -i ...
”。
Bot 命令将触发一个新的 notepad++ 实例(因此有 -multiInst
' 选项),并等待该实例关闭后再继续。
请注意,我只使用'/',而不是\
'。而我installed msysgit using option 2.(将git\bin
目录添加到PATH
环境变量中,但不覆盖一些内置的windows 工具)
notepad++ 包装器被称为 .bat 的事实并不重要。
最好将其命名为“npp.sh”并将其放在[git]\cmd
目录中(或在您的 PATH 环境变量引用的任何目录中)。
另见:
How do I view ‘git diff’ output with visual diff program?一般理论 How do I setup DiffMerge with msysgit / gitk? 另一个外部工具示例(DiffMerge 和 WinMerge)lightfire228 添加in the comments:
对于遇到 N++ 只打开一个空白文件而 git 不接受您的提交消息的问题的任何人,请参阅“Aborting commit due to empty message”:将您的
.bat
或.sh
文件更改为:
"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>.
这将告诉 notepad++ 打开临时提交文件,而不是一个空白的新文件。
【讨论】:
在您的 shell 脚本中,您需要在 $* 周围加上双引号,否则对于其中包含空格的路径将无法正常工作。感谢您的详尽解释 - 我正在 Windows 上为初级程序员安装 git(和一堆其他东西),而且命令行很难在不让他们学习 vi 命令的情况下摸索。 另一个具体例子:***.com/questions/1634161/… 在Bennett's answer 之后,您不需要创建脚本,只需在引号内使用撇号'。 @Tobias:是的,我已经将他的答案包含在我的答案中,以及我仍然更喜欢在git config
设置中引用脚本的原因。
@NateGlenn 使用缩短的 dir /X
等效项:“PROGRA~2
”代表“Program Files (x86)
”,这是在 Windows 上使用跨平台兼容工具时养成的好习惯,它允许你来挤压空白。【参考方案6】:
无论如何,我一直在玩这个,发现以下内容对我很有效:
git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"
我不认为 CMD 喜欢单引号所以你必须使用双引号“来指定空间嵌入字符串参数”。
另一方面,Cygwin(我相信它是 Git 的 Bash 的底层平台)喜欢 '
和 "
;您可以指定类似 CMD 的路径,使用 /
而不是 \
,只要字符串被引用,即在这种情况下,使用单引号。
-m
覆盖/指示使用多个编辑器,并且不需要在末尾添加 %*
。
【讨论】:
感谢单/双引号的解释,现在有意义了!git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"
对我来说就像一个魅力。
我使用了` git config --global code.editor "'C:\\Program Files\\Sublime Text 3\\sublime_text.exe' -n -w -m"`,但是当我运行“git commit”它会打开一个记事本编辑器。关于为什么会这样的任何想法?提前致谢。
@RyanChase 从 ./git/config 中删除本地配置条目,例如 editor = notepad
Git Bash 在 MingW64 下运行,而不是 Cygwin。 Cygwin 有自己的 Git 二进制文件。【参考方案7】:
我在 Windows 上使用Cygwin,所以我使用:
export EDITOR="emacs -nw"
-nw
用于 no-windows
,即告诉 Emacs 不要尝试使用 X Window。
Emacs 键绑定在 Windows shell 中不适合我,所以我只会在 Cygwin shell 中使用它...(推荐rxvt。)
【讨论】:
【参考方案8】:我刚刚遇到同样的问题并找到了不同的解决方案。我得到了
error: There was a problem with the editor 'ec'
我的路径上有VISUAL=ec
和一个名为ec.bat
的批处理文件,其中包含一行:
c:\emacs\emacs-23.1\bin\emacsclient.exe %*
这让我可以使用ec <filename>
从命令行编辑文件,设置VISUAL
意味着大多数unixy 程序也可以使用它。不过,Git 搜索路径的方式似乎与我的其他命令不同 - 当我查看 Process Monitor 中的 git commit
时,我看到它在路径上的每个文件夹中查找 ec
和 ec.exe
,但不是 @987654331 @。我添加了另一个环境变量(GIT_EDITOR=ec.bat
),一切都很好。
【讨论】:
【参考方案9】:在Darren's answer 的基础上,要使用 Notepad++,您可以简单地执行此操作(全部在一行上):
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
显然,C:/Program Files/Notepad++/notepad++.exe
部分应该是系统上 Notepad++ 可执行文件的路径。例如,它可能是C:/Program Files (x86)/Notepad++/notepad++.exe
。
它对我来说就像一个魅力。
文章How to set Notepad++ as the default Git editor for commits instead of Vim解释命令的参数。
【讨论】:
我也是!顺便说一句,这些开关在 C:/Program Files/Notepad++/user.manual/documentation/notepad-user-manual/command-line.html 中有解释 注意 Notepad++ 位于 `C:\Program Files(x86)` 中 对于 x64 Windows 更改为:git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"跨度> 我意识到我参加这个聚会迟到了,但出于好奇,有没有人知道(或者甚至记得,经过这么多年)为什么要指定“-notabbar”?我理解其他参数背后的原因(嗯,实际上不知道为什么是“-noPlugin”),但不是这个。 @WilsonF 原因是您必须退出 notepad++ 才能让 git 停止等待您的输入并继续。您不想想要在此 Notepad++ 实例中打开其他选项卡,因为那样您的 git 会话将被冻结!这些设置完全正确:如果您已经打开 Notepad++,您将获得一个新实例,它不允许您打开其他文件,并且您必须在完成后关闭才能让 git 知道您已完成编辑.提交消息的工作方式相同。【参考方案10】:我也在 Windows 上使用 Cygwin,但使用的是 gVim(而不是基于终端的 Vim)。
为了完成这项工作,我做了以下工作:
-
创建了一个包含以下内容的单行批处理文件(名为
git_editor.bat
):
"C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
将git_editor.bat
放在我的PATH
中。
设置GIT_EDITOR=git_editor.bat
完成此操作后,git commit
等将正确调用 gVim 可执行文件。
注意 1:gVim 的 --nofork
选项确保它在提交消息被写入之前一直阻塞。
注意 2:如果路径中有空格,则 gVim 路径周围的引号是必需的。
注意 3:需要在 "%*" 周围加上引号,以防 Git 传递带有空格的文件路径。
【讨论】:
对于使用 msysgit(不是 cygwin 的 git)的人,我可以稍微简化一下。 ***.com/questions/10564/… 重新考虑它可能也适用于 cygwin,我不完全确定【参考方案11】:我的 PortableGit 1.6 工作正常,但在升级到 PortableGit 1.7 Windows 版本后,我遇到了问题。一些 Git 命令可以很好地打开 Notepad++.exe,但有些则不能,尤其是 Git rebase 的行为不同。
问题是有些命令运行 Windows cmd 进程,有些使用 Unix cmd 进程。我想给记事本++编辑器提供启动属性,所以我需要一个自定义的脚本。我的解决方案是这样的。
创建一个脚本来运行适当的文本编辑器。该脚本看起来很奇怪,但它同时处理 Windows 和 Unix 变体。
c:/PortableGit/cmd/git-editor.bat
#!/bin/sh
# Open a new instance
function doUnix()
"c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $*
exit
doUnix $*
:WINCALL
"c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %*
设置全局 core.editor 变量
脚本已保存到 git/cmd 文件夹,因此它已经在 gitconsole 路径中。这是强制性的,因为完整路径可能无法正常工作。
git config --global core.editor "git-editor.bat"
现在我可以运行 git commit -a 和 git rebase -i master 命令了。如果您在 Git Windows 工具中遇到问题,请尝试一下。
【讨论】:
【参考方案12】:我更喜欢使用 Emacs。设置它可能有点棘手。
-
下载 Emacs 并在
c:\emacs
之类的地方解压。
运行c:\emacs\bin\addpm.exe
。如果您使用的是 Windows Vista 或更高版本,则需要右键单击并“以管理员身份运行”。这会将可执行文件放在您的路径中。
在.emacs
文件中的某处添加(server-start)
。有关将 .emacs
文件放在何处的建议,请参阅 Emacs Windows FAQ。
git config --global core.editor emacsclientw
Git 现在将在现有 Emacs 进程中打开文件。您必须从 c:\emacs\bin\runemacs.exe
手动运行该现有进程。
【讨论】:
【参考方案13】:WordPad!
我很高兴使用 Vim,但由于我试图将 Git 介绍给公司,所以我想要我们都拥有的东西,并发现写字板似乎工作正常(即 Git 确实会等到你完成编辑并关闭窗口)。
git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'
那是在 msysgit 上使用 Git Bash;我没有从 Windows 命令提示符尝试过(如果有什么不同的话)。
【讨论】:
我喜欢它的简单性,但它对我来说并没有开箱即用。这是我尝试过的。我收到以下错误消息:错误:编辑器“C:\Program Files\Windows NT\Accessories\wordpad.exe”出现问题。 引号不正确。您必须将双引号放在单引号之外。即使用“'C:\Program Files\Windows NT\Accessories\wordpad.exe'”,然后就可以工作了。 您还可以使用正斜杠 (/) 而不是反斜杠 (\)。 另外,最好使用“git config --global”而不是仅仅使用“git config”。您很可能希望该设置应用于您工作站上的所有 git 存储库,而不仅仅是您现在所在的那个。 @ChrisJones,在这种情况下没有意义,因为“程序文件”之间有空格。【参考方案14】:这是我使用 Geany 作为 Git 编辑器的设置:
git config --global core.editor C:/path/to/geany.bat
在geany.bat
中包含以下内容:
#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"
它可以在 DOS 控制台和 msysgit 中运行。
【讨论】:
VonC 回答了关于 notepad++,我的回答是给 Geany?【参考方案15】:编辑:更新到 Vim 7.3 后,我得出的结论是,最干净、最简单的方法是:
将 Vim 的主文件夹添加到您的路径(右键单击 我的电脑 → 属性 → 高级 → 环境变量)
运行这个:
git config --global core.editor "gvim --nofork '%*'"
如果你这样做,那么我相当肯定它也适用于 Cygwin。
原答案:
即使有几个与 Vim 相关的答案,我仍然无法在 Windows 下使用 gVim(而不使用批处理文件或 %EDITOR% 或 Cygwin)。
我最终得出的结论是干净整洁,并借鉴了这里的一些解决方案:
git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"
花了我一段时间的一个问题是这些不是 Windows 样式的反斜杠。它们是正常的正斜杠。
【讨论】:
如果Program Files(x86)
中安装了vim,那么显然需要更改路径。【参考方案16】:
我设法通过使用引号和/
设置 EDITOR 变量来使环境版本工作:
EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"
【讨论】:
【参考方案17】:这是更大问题的一个症状。值得注意的是,您有一些设置TERM=dumb
。其他不能正常工作的事情是 less
命令,它表示您没有功能齐全的终端。
这似乎最常见的原因是在您的全局 Windows 环境变量中设置了 TERM。对我来说,当我安装Strawberry Perl 时出现了问题,msysgit bug for this problem 上有一些关于此的信息以及几个解决方案。
第一个解决方案是在 ~/.bashrc 中添加:
export TERM=msys
您可以从 Git Bash 提示符中执行此操作,如下所示:
echo "export TERM=msys" >> ~/.bashrc
另一个解决方案,最终是我所做的,因为我不关心 Strawberry Perl 将 TERM=dumb
添加到我的环境设置的原因,是去删除 TERM=dumb
为 directed in this comment on the msysgit bug report。
控制 面板/系统/高级/环境 变量...(或类似的,取决于 您的 Windows 版本)在哪里 设置了粘性环境变量 在 Windows 上。默认情况下,TERM 不是 放。如果在那里设置了 TERM,那么你 (或您拥有的程序之一 已安装 - 例如草莓 Perl) 有 设置它。删除该设置,你 应该没问题。
同样,如果您使用 Strawberry Perl 并关心 CPAN 客户端或类似的东西,您可以不理会 TERM=dumb
并在 ~/.bashrc 文件中使用 unset TERM
,这将具有与设置类似的效果如上所述的明确术语。
当然,所有其他解决方案都是正确的,因为您可以使用 git config --global core.editor $MYFAVORITEEDITOR
确保 Git 在需要为您启动一个编辑器时使用您最喜欢的编辑器。
【讨论】:
非常感谢!由于 Strawberry perl,我遇到了这个问题,这让我发疯!谢谢指出这一点【参考方案18】:当使用远程安装的 homedrive(Samba 共享、NFS、...)时,您的 ~/.git
文件夹在所有系统之间共享,这可能会导致一些问题。因此,我更喜欢使用脚本来为正确的系统确定正确的编辑器:
#!/usr/bin/perl
# Detect which system I'm on and choose the right editor
$unamea = `uname -a`;
if($unamea =~ /mingw/i)
if($unamea =~ /devsystem/i)#Check hostname
exec('C:\Program Files (x86)\Notepad++\notepad++.exe', '-multiInst', '-nosession', @ARGV);
if($unamea =~ /testsystem/i)
exec('C:\Program Files\Notepad++\notepad++.exe', '-multiInst', '-nosession', @ARGV);
$MCEDIT=`which mcedit`;
if($MCEDIT =~ /mcedit/)
exec($MCEDIT, @ARGV);
$NANO=`which nano`;
if($NANO =~ /nano/)
exec($NANO, @ARGV);
die "You don't have a suitable editor!\n";
可能会考虑一个普通的 shell 脚本,但我使用的是 Perl,因为它是 msysgit 附带的,而您的 Unix-like 系统通常也会提供一个。
将脚本放入/home/username/bin
,应将其添加到.bashrc
或.profile
中的PATH
。添加 git config --global core.editor giteditor.pl
后,无论您身在何处,您都拥有合适的编辑器。
【讨论】:
【参考方案19】:感谢 *** 社区 ... 以及一些研究,我能够让我最喜欢的编辑器 EditPad Pro 成为 msysgit 1.7.5.GIT 和 TortoiseGit v1.7.3.0 的核心编辑器Windows XP SP3...
按照上面的建议,我为代码编辑器添加了 Bash 脚本的路径...
git config --global core.editor c:/msysgit/cmd/epp.sh
但是,在上述解决方案的几次尝试失败之后......我终于能够让它工作。根据 EditPad Pro 的文档,添加 '/newinstance' 标志将允许 shell 等待编辑器输入...
'/newinstance' 标志是我的关键......
#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"
【讨论】:
是的,newinstance 参数的双斜杠应该在 Editpad 的文档中。感谢您在此处注明! EditPad Pro 需要像/newinstance
这样的命令行开关,才能有一个正斜杠。这对于 Windows 应用程序来说是相当正常的。如果您从 UNIX shell 调用 EditPad,那么您将需要使用您的 shell 提供的任何机制来转义正斜杠,以便它不会将开关视为绝对路径并将单个文字正斜杠传递给 EditPad 的命令行。
如果你有 EditPad Pro 7,并且你想从一个想要等待 EditPad 进程的进程调用 EditPad Pro,那么你应该在 EditPad 的命令行上传递/wait
开关。您可以使用/wait
和/newinstance
来控制是否应打开新的EditPad 窗口或是否应重用现有窗口。无论窗口是创建还是重用,脚本启动的进程都将等待文件关闭。 EditPad Pro 6 及更早版本不支持/wait
。
@JanGoyvaerts ~ 感谢/wait
标志提示先生... :)
我无法使用上面的说明让 EditPad Lite 为我工作。也许是因为我试图通过使用 Windows 终端而不是 Git Bash 或其他一些 UNIX shell 来调用 EditPad(通过 Git)。对我有用的是直接编辑 .gitconfig 的 [core]
部分以包含 editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance"
行。【参考方案20】:
我只是直接使用TortoiseGit。它与我的PuTTY 公钥完美集成。
它有一个完美的提交消息编辑器。
【讨论】:
【参考方案21】:这对我使用 Cygwin 和 TextPad 6 有效(编辑:只要您对脚本进行明显更改,它也适用于 TextPad 5),并且大概该模型也可用于其他编辑器:
文件~/.gitconfig
:
[core]
editor = ~/script/textpad.sh
文件~/script/textpad.sh
:
#!/bin/bash
APP_PATH=`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`
FILE_PATH=`cygpath -w $1`
"$APP_PATH" -m "$FILE_PATH"
这种单线也可以:
文件~/script/textpad.sh
(选项2):
"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w $1`"
【讨论】:
【参考方案22】:我在多个平台上使用 Git,我喜欢在所有平台上使用相同的 Git 设置。 (事实上,我的所有配置文件都在 Git 的发布控制之下,并且在每台机器上都放置了一个 Git 存储库克隆。)我想出的解决方案是这样的:
我将我的 editor 设置为 giteditor
git config --global core.editor giteditor
然后我在我的 PATH 中创建一个名为 giteditor 的符号链接。 (我有一个个人 bin 目录,但 PATH 中的任何地方都可以使用。)该链接指向我当前选择的编辑器。在不同的机器和不同的平台上,我使用不同的编辑器,所以这意味着我不必更改我的通用 Git 配置(.gitconfig),只需更改 giteditor 的链接> 指向。
符号链接由我所知道的每个操作系统处理,尽管它们可能使用不同的命令。对于 Linux,您使用 ln -s。对于 Windows,您使用 cmd 内置 mklink。它们有不同的语法(你应该查一下),但它们的工作方式都是一样的,真的。
【讨论】:
实际上,我在 Windows7 上试过这个,它在 msys git 上不起作用。它说error: cannot spawn giteditor: No such file or directory
【参考方案23】:
这对我有用:
-
将包含编辑器可执行文件的目录添加到您的 PATH 变量中。 (例如“C:\Program Files\Sublime Text 3\”)
重新启动计算机。
将 core.editor 全局 Git 变量更改为编辑器可执行文件的名称不带扩展名 '.exe'(例如 git config --global core.editor sublime_text)
就是这样!
注意: Sublime Text 3 是我在此示例中使用的编辑器。
【讨论】:
以这种方式配置时,Sublime Text 3 是打开多个实例还是处理 git 需要关闭它以表示编辑结束的事实? 我认为它会打开一个新窗口。您可以添加 --wait 开关 (sublimetext.com/forum/viewtopic.php?f=3&t=3257)【参考方案24】:我正在使用 GitHub for Windows,这是一个不错的视觉选择。但我也更喜欢命令行,所以当我在 Git shell 中打开存储库时,我只需设置以下内容即可:
git config --global core.editor vim
效果很好。
【讨论】:
【参考方案25】:这适用于 PowerShell 和 cmder 1.2(与 PowerShell 一起使用时)。在文件~/.gitconfig
:
[core]
editor = 'c:/program files/sublime text 3/subl.exe' -w
How can I make Sublime Text the default editor for Git?
【讨论】:
【参考方案26】:我在here 上找到了一个非常简单的解决方案——尽管您必须复制作者给出的“subl”文件的路径可能有误。
我运行的是 Windows 7 x64,我必须将“subl”文件放在我的 /Git/cmd/
文件夹中才能使其工作。
不过,它就像一个魅力。
【讨论】:
【参考方案27】:基于VonC'ssuggestion,这对我有用(让我发疯):
git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"
省略 -wait
可能会导致问题,尤其是在您使用 Gerrit 并更改必须手动复制到提交消息底部的 ID 时。
【讨论】:
【参考方案28】:Atom 和 Windows 10
我右键单击桌面上的 Atom 图标,然后单击属性。
复制了“开始于”位置路径
用 Windows 资源管理器查看,发现“atom.exe”。
我在 Git Bash 中输入了这个:
git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"
注意:我将所有 \
更改为 /
。我在我的主目录中创建了一个 .bashrc 并使用/
来设置我的主目录并且它有效,所以我认为/
将是要走的路。
atom-editorgitgit-bashwindows-10
【讨论】:
请查看URL,这将有助于提高您的内容质量 @willie 谢谢,我格式化了文本并添加了一些标签。希望能有所改善。 我收到此错误:%LocalAppData%\atom.exe --wait: line 0: fg: no job control%LocalAppData%\\atom\\bin\\atom.cmd --wait
也有错误【参考方案29】:
对于Atom,您可以这样做
git config --global core.editor "atom --wait"
Visual Studio Code
类似git config --global core.editor "code --wait"
这将打开一个 Atom 或 Visual Studio Code 窗口供您提交,
或Sublime Text:
git config --global core.editor "subl -n -w"
【讨论】:
更简单有效。谢谢。【参考方案30】:这是 Cygwin 的解决方案:
#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 $k+"$k"
如果没有路径,则不传递路径
如果路径为空,则传递空路径
如果路径不为空,则转换为 Windows 格式。
然后我设置这些变量:
export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
EDITOR 允许脚本与 Git 一起工作
GIT_EDITOR 允许脚本使用Hub commands
Source
【讨论】:
以上是关于如何设置编辑器以在 Windows 上使用 Git?的主要内容,如果未能解决你的问题,请参考以下文章
在 git repo 中安装 AWSDevTools 以在 windows 上使用弹性 beanstalk
当我在 Windows 中编辑代码但在 Linux 中构建和运行代码时如何使用 git 进行版本控制(使用 pycharm)