如何在Windows上设置与Git一起使用的编辑器?

帕特里克·麦克埃尔哈尼

我正在Windows上试用Git我到了尝试“ git commit”的地步,并且出现了这个错误:

终端很笨,但没有定义VISUAL或EDITOR。请使用-m或-F选项提供消息。

所以我发现我需要一个名为EDITOR的环境变量。没问题。我将其设置为指向记事本。几乎成功了。默认提交消息在记事本中打开。但是记事本不支持裸线换行。我外出并获得了Notepad ++,但是我不知道如何将Notepad ++设置为%EDITOR%以预期的方式与Git配合使用的方式。

我没有嫁给Notepad ++。在这一点上,我不介意使用什么编辑器。我只希望能够在编辑器中而不是在命令行(带有-m)中键入提交消息

那些在Windows上使用Git的人:您使用什么工具来编辑提交消息,并且需要做什么才能使其生效?

2015年9月更新(6年后)

git-for-Windows(2.5.3)最新版本现在包括:

通过配置git config core.editor notepad,用户现在可以notepad.exe用作其默认编辑器
配置git config format.commitMessageColumns 72将由记事本包装器拾取,并在用户编辑提交消息后将其换行。

提交69b301b约翰内斯Schindelin( )dscho

Git 2.16(Q1 2018)将显示一条消息,告知用户在生成编辑器时正在等待用户完成编辑,以防编辑器打开到隐藏窗口或模糊的地方而导致用户迷路。

请参阅commit abfb04d(2017年12月7日)和commits a64f213(2017年11月29日)作者Lars Schneider(larsxschneider
帮助:Junio C Hamano(gitster
(由Junio C gitsterHamano合并--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的答案提到可以避免添加脚本,而是直接在简单引号之间引用程序本身注意斜线的方向!使用/NOT\分隔路径名称中的文件夹!

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 "$*"

通过该设置,我可以git config --global --edit从DOS或Git Shell中进行操作,也可以git rebase -i ...从DOS或Git Shell中进行操作。
Bot命令将触发一个新的notepad ++实例(因此带有-multiInst'选项),并等待该实例关闭后再继续。

请注意,我仅使用'/',而不使用\'。然后使用选项2安装了msysgit。(将git\bin目录添加PATH环境变量中,但不覆盖某些内置Windows工具)

notepad ++包装器称为.bat的事实并不重要。
最好将其命名为“ npp.sh”并将其放置在[git]\cmd目录中(或放置在PATH环境变量引用的任何目录中)。


也可以看看:


lightfire228添加了评论

对于任何人问题,其中N ++只是打开一个空白文件,而git不接受您的提交消息,请参阅“由于空消息而中止提交”:将您的.bator.sh文件更改为:

"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. 

这将告诉notepad ++打开临时提交文件,而不是一个空白的新提交文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

与AngularJS一起使用时,如何在TinyMCE Richtext编辑器中启用浏览器拼写检查

如何从Visual Studio编辑器中检索文本以与Roslyn SyntaxTree一起使用?

如何在Windows的Git上将gVim设置为我的编辑器?

如何在Linux上设置编辑器?

如何设置 visudo 以使用与 Fedora 上的默认编辑器不同的编辑器?

CKEditor-如何在2个编辑器中一起使用Advanced Content Filter和窗口小部件

如何将Froala HTML编辑器与Ext JS Classic工具包一起使用?

如何将 terraform 与 AWS 提供商和本地编辑器一起使用?

如何在Windows 10上使用Powershell将Google Colab与本地TensorFlow Jupyter服务器一起使用?

将Outlook 2003与Word编辑器一起使用,但已安装Office 2007

哪个智能HTML编辑器可以与jsf 1.2一起使用?

Xaml编辑器无法在VS 2015中与Xamarin一起正常使用

原子编辑器:不要将rubocop与atom一起使用

在单个页面中将高阶组件与多个Draft.js编辑器一起使用

将Python Shell与任何文本编辑器一起使用

我可以将SSH vi代码编辑器与phpseclib一起使用吗?

将WYSIWYG编辑器与PHP转义方法一起使用

Mac上的Git:如何将Nano设置为默认文本编辑器?

如何在 Ubuntu 16.04 LTS 上设置 TortoiseHG 以与 Caja 一起使用?

如何在Windows Vista上不使用快捷方式的情况下启动IDLE(Python编辑器)?

在Windows上的mongorc中设置mongodb编辑器路径

您如何将Logger.log(e)与Google Forms一起使用?(使用NEW Apps脚本编辑器)

Windows上的“ git bash”编辑器(mingw / msys + mintty的编辑器)?

如何在Mac上的ATOM编辑器中设置自定义字体?

设置器如何与可变对象一起使用?

Windows 10上的git默认编辑器

如何在17.10服务器上获取netplan以与使用MAC地址保留的Windows Server DHCP服务器一起使用?

如何在OSX上安装gtk以与g ++ / gcc编译器一起使用

Swift如何在UIImagepickercontroller中为编辑器设置编辑器裁剪大小