如何在 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.exegit config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"
使用过,它同时在 cmd terminal
和 git 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++(或其他)?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 msysgit / gitk 设置 DiffMerge?