2015 年 9 月更新(6 年后)
git-for-Windows (2.5.3)的最新版本现在包括:
通过配置git config core.editor notepad
,用户现在可以notepad.exe
用作他们的默认编辑器。
配置git config format.commitMessageColumns 72
将由记事本包装器拾取,并在用户编辑提交消息后对其进行换行。
请参阅Johannes Schindelin ( )的提交 69b301b。dscho
并且 Git 2.16(2018 年第一季度)将显示一条消息,告诉用户它在生成编辑器时正在等待用户完成编辑,以防编辑器打开到隐藏窗口或模糊的地方而用户迷路。
请参阅提交 a64f213(2017年 11 月 29 日)由Lars Schneider ( )提交 a64f213 (2017 年 12 月 7 日) 。
帮助者:Junio C Hamano ( )。(由Junio C Hamano 合并——在提交 0c69a13中,2017 年 12 月 19 日)larsxschneider
gitster
gitster
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 不接受您的提交消息的问题的人,请参阅“ Aborting commit due to empty message ”:将您的.bat
or.sh
文件更改为:
"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>.
这将告诉 notepad++ 打开临时提交文件,而不是一个空白的新文件。