如何在 msysgit 中使用 Notepad++(或其他)?

Posted

技术标签:

【中文标题】如何在 msysgit 中使用 Notepad++(或其他)?【英文标题】:How do I use Notepad++ (or other) with msysgit? 【发布时间】:2010-12-10 16:30:29 【问题描述】:

如何在 msysgit 中使用 Notepad++(或除 vim 之外的任何其他编辑器)?

我尝试了以下所有方法均无济于事:

git config --global core.editor C:\Program Files\Notepad++\notepad++.exe

git config --global core.editor "C:\Program Files\Notepad++\notepad++.exe"

git config --global core.editor C:/Program Files/Notepad++/notepad++.exe

git config --global core.editor C:\\Program Files\\Notepad++\\notepad++.exe

【问题讨论】:

任何错误信息?您是否尝试过设置 EDITOR 环境变量? 试试看这里:***.com/questions/10564/… 刚刚按要求添加了一些关于脚本路径的信息,包括空格。 How can I set up an editor to work with Git on Windows?的可能重复 【参考方案1】:

2010-2011 年更新:

zumalifeguard 的solution(赞成)比原来的更简单,因为它不再需要 shell 包装脚本。

正如我在“How can I set up an editor to work with Git on Windows?”中解释的那样,我更喜欢包装器,因为它更容易尝试切换编辑器或更改一个编辑器的路径,而无需使用git config 注册所述更改再次。 但这只是我。


附加信息:以下解决方案适用于 Cygwin,而 zuamlifeguard 的解决方案不适用。


原始答案。

以下内容:

C:\prog\git>git config --global core.editor C:/prog/git/npp.sh

C:/prog/git/npp.sh:
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"

确实有效。这些命令被解释为 shell 脚本,因此将任何 Windows 命令集包装在 sh 脚本中的想法。 (作为Frankycomments:“记得用Unix风格的行结尾保存你的.sh文件,否则会收到神秘的错误信息!”)

关于 SO 问题的更多细节How can I set up an editor to work with Git on Windows?

注意“-multiInst”选项,以确保每次来自 Git 的调用都有一个新的 notepad++ 实例。

还要注意,如果您在 Cygwin 上使用 Git(并且想use Notepad++ from Cygwin),那么scphantm 在“using Notepad++ for Git inside Cygwin”中说明您必须注意:

git 正在传递一个 cygwin 路径,而 npp 不知道如何处理它

所以这种情况下的脚本是:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$(cygpath -w "$*")"

多行可读性:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar \
  -nosession -noPlugin "$(cygpath -w "$*")"

"$(cygpath -w "$*")" 是这里的重要部分。

Valcommented(然后删除)你不应该使用-notabbar选项:

在变基期间禁用选项卡没有好处,但会对记事本的一般可用性造成很大损害,因为-notab 成为默认设置,并且每次在变基后启动记事本时都必须Settings>Preferences>General>TabBar> Hide>uncheck。这是地狱。你推荐了地狱。

所以宁可使用:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession -noPlugin "$(cygpath -w "$*")"

即:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession \
  -noPlugin "$(cygpath -w "$*")"

如果您想将脚本“npp.sh”放在带空格的路径中(如 'c:\program files\...',),你有三个选择:

尝试引用路径(单引号或双引号),如:

git config --global core.editor 'C:/program files/git/npp.sh'

或试试shortname notation(不是万无一失的):

git config --global core.editor C:/progra~1/git/npp.sh

或者(我最喜欢的)将“npp.sh”放在%PATH% 环境变量的目录部分中。您不必为脚本指定任何路径。

git config --global core.editor npp.sh

Steiny 报告in the comments 不得不做:

git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'

【讨论】:

我通过将 npp.sh 放在我的驱动器的根目录中(即 - C:/npp.sh)来实现这一点。任何时候我尝试定位一个带有空格的文件夹(即 - D:/Program Files (x86)/Git/npp.sh)它都会失败,什么是逃避空格和/或让它工作的正确方法?跨度> 在它周围加上引号。看看他在他的例子中是如何引用整个事情的? zumalifeguard 的回答对我有用。它不需要 shell 脚本包装器。 @wbinford:我添加了指向 zumalifeguard 答案的链接(我赞成),以及我更喜欢注册包装器而不是直接命令的原因。 我已经尝试了上述的多种组合,但没有一个可以与 git 一起使用。我的路径中有我的 npp 脚本,如果我从我的 cygwin 控制台输入,“npp file”npp 打开文件就好了,但是当我执行“git rebase -i”时,npp 打开一个空白文件而不是合并文件。任何想法为什么会发生这种情况?【参考方案2】:

这对我有用

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe

【讨论】:

我也这样做了.. 现在如何打开记事本++ 来提交消息?什么是逗号??请你举个例子 添加 -multiInst 选项在这里至关重要,就像在其他答案中一样。 这不好有两个原因。首先,如果 C: 卷是 NTFS 并关闭了 8.3 文件名选项,则根本没有 C:\Progra~1。其次,C:\Progra*目录可能有多个,所以~1后缀不一定是有效的。【参考方案3】:
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

或者,对于 64 位 Windows 和 Notepad++ 的 32 位安装:

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

或者,可以在 32 位或 64 位 Windows 的命令行上发出以下命令。它将从注册表中拉取notepad++.exe的位置并配置git自动使用它:

FOR /F "usebackq tokens=2*" %A IN (`REG QUERY "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\notepad++.exe" /ve`) DO git config --global core.editor "'%B' -multiInst -notabbar -nosession -noPlugin"

如果您希望从 .BAT 或 .CMD 文件中放置上述内容,则必须将 %A 替换为 %%A 并将 %B 替换为 %%B

【讨论】:

也适用于 git 扩展。请注意,对于 64 位 Windows,该条目是 "C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin 愚蠢的是 -notabbar 将永久禁用标签栏,而不仅仅是该会话。正常启动notepad++时,你必须进入设置对话框再次启用标签栏。 我不得不使用:git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ...不知道为什么。 我有 Windows 7 64 位、msysgit v1.9.2 和 Notepad++ v6.6.9,这完美。谢谢。 @CoDEmanX 如果没有-multiInst,它可能只会向已经运行的 Notepad++ 发出信号以打开文件然后立即退出。如果任何调用编辑器都希望它仅在完成编辑时返回(即同步操作,如调用 vi 时的情况),这可能是一个大问题。例如,尝试交互式变基 (git rebase -i)。如果这仍然按预期工作,那么你很好。【参考方案4】:

这是 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

【讨论】:

【参考方案5】:

我使用带有 PATH 变量的方法。 Notepad++ 的路径被添加到系统的 PATH 变量中,然后 core.editor 设置如下:

git config --global core.editor notepad++

另外,您可以为 Notepad++ 添加一些附加参数:

git config --global core.editor "notepad++.exe -multiInst"

(正如我在“Git core.editor for Windows”中详述的那样)

在这里您可以找到一些在说明 Notepad++ Command Line Options 时可以使用的选项。

【讨论】:

【参考方案6】:

2015 年更新

如果您将 Notepad++ 解压/安装到 c:\utils\npp\ 并为简单起见将 notepad++.exe 重命名为 npp.exe,那么您所要做的就是

git config --global core.editor c:/utils/npp/npp.exe

没有包装脚本或其他诡计。 PATH 中不需要有 Notepad++。

【讨论】:

2020 年更新:您似乎错过了打开新记事本实例的选项。我从 cmd.exe git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin" 使用过,它同时在 cmd terminalgit bash 上工作【参考方案7】:

按照这些说明,

    首先确保您的系统上安装了notepad++,并且它是打开 .txt 文件的默认程序。

    然后在您的系统上安装gitpad。请注意我上次检查的下载链接已损坏,因此请从here 以explained 下载。

然后在提交时你应该会看到你最喜欢的文本编辑器弹出。

【讨论】:

【参考方案8】:
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""

【讨论】:

这对我有用!之后 .gitconfig 看起来像: [core] editor = \"c:\\Program Files (x86)\\Notepad++\\notepad++.exe\" -multiInst -nosession -noPlugin 查看投票最高的答案,其中包括这个(我读得不够远)【参考方案9】:

我使用了 starikovs 的解决方案。我从一个 bash 窗口开始并给出了命令

cd ~
touch .bashrc

然后我在windows explorer中找到了.bashrc文件,用notepad++打开并添加了

PATH=$PATH:"C:\Program Files (x86)\Notepad++"

以便 bash 知道在哪里可以找到 Notepad++。 (在 bash PATH 中拥有 Notepad++ 本身就是一件有用的事情!)然后我粘贴了他的行

git config --global core.editor "notepad++.exe -multiInst"

进入 bash 窗口。我为 git 存储库启动了一个新的 bash 窗口,以使用命令进行测试

git rebase -i HEAD~10

和希望在记事本++中打开的文件。

【讨论】:

【参考方案10】:

从Git for Windows v2.15.0 (October 30th 2017) 开始,现在可以将configure nano 或Notepad++ 作为Git 的默认编辑器instead of vim

在安装过程中,您将看到以下屏幕:

【讨论】:

【参考方案11】:

我使用的是 Windows 10 和 notepad++,我收到以下错误消息:

line 0: syntax error near unexpected token `(' git windows

所以我以这种方式进行设置:

git config --global core.editor 'C:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe'

它可以工作

【讨论】:

以上是关于如何在 msysgit 中使用 Notepad++(或其他)?的主要内容,如果未能解决你的问题,请参考以下文章

windows下git怎么管理权限

如何使用 msysgit / gitk 设置 DiffMerge?

在 msysgit 中运行 MinGW/MSYS 工具

在 msysgit windows 中永久添加 SSH 密钥

如何在 Windows 中运行 git-p4?

如何在 Notepad++ 中比较两个文件