如何将Notepad ++(或其他)与msysgit一起使用?


210

如何在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

1
有任何错误讯息吗?您是否尝试过设置EDITOR环境变量?
csl


只是根据要求添加了一些有关脚本路径的信息,包括空格。
VonC

Answers:


76

2010-2011年更新:

zumalifeguard解决方案(建议使用)比原始解决方案简单,因为它不再需要外壳包装脚本。

正如我在“ 如何在Windows上设置与Git一起使用的编辑器? ”中所解释的那样,我更喜欢使用包装器,因为它更容易尝试切换编辑器或更改一个编辑器的路径,而不必注册所做的更改有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脚本中。
(正如Franky的 评论:“记住以.shUnix样式行结尾保存文件,否则会收到神秘的错误消息!”)

有关SO问题的更多详细信息如何在Windows上设置与Git一起使用的编辑器?

请注意' -multiInst'选项,以确保从Git进行的每次调用都可以使用新的notepad ++实例。

还要注意,如果您在Cygwin上使用Git (并且要使用Cygwin的Notepad ++),那么scphantm在“ 在Cygwin内将Notepad ++用于Git ”中解释说,您必须意识到:

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 "$*")"这里很重要。

Val 评论(然后删除)您不应使用的-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'
  • 或尝试使用缩写符号(并非万无一失):

    git config --global core.editor C:/progra~1/git/npp.sh
  • 或(我最喜欢的)将“ npp.sh”放在%PATH%环境变量的目录部分中。然后,您不必为脚本指定任何路径。

    git config --global core.editor npp.sh
  • Steiny 在评论中报告必须要做的事:

    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)时,它都会失败,那么转义空格和/或使其正常工作的正确方法是什么?
PHLAK

用引号引起来。在他的示例中看到他如何对整个事情进行引用?
弗雷德

2
zumalifeguard的回答对我有用。它不需要外壳程序脚本包装。
wbinford 2011年

1
@wbinford:我已经添加了一个链接到zumalifeguard的答案(我对此表示赞同),以及我更喜欢注册包装器而不是直接命令的原因。
VonC

1
我已经尝试了以上的多种组合,但都无法与git一起使用。我在路径中有我的npp脚本,如果我从cygwin控制台键入,则“ npp {file}” npp可以很好地打开文件,但是当我执行“ git rebase -i”时,npp会打开一个空白文件而不是合并文件。任何想法为什么会发生这种情况?
scphantm

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

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

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


9
也可以在git扩展中使用。请注意,对于64位Windows,该条目为"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Tim Abell,2012年

15
愚蠢的是,-notabbar将永久禁用选项卡栏,而不仅仅是针对该会话。通常在notepad ++中启动时,您必须进入设置对话框并再次启用选项卡栏。
Oskar Berggren

4
我不得不使用:git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ...不确定原因。
David Faivre

1
我的Windows 7 64位,msysgit v1.9.2的记事本++ v6.6.9和这个工作PERFECTLY。谢谢。
Radu Murzea,2015年

2
@CoDEmanX如果没有-multiInst它,可能仅表示已经运行的Notepad ++打开文件,然后立即退出。如果调用编辑器希望它仅在完成编辑后才返回(例如,调用vi时就是同步操作),则这可能是一个大问题。例如,尝试使用交互式rebase(git rebase -i)。如果仍然可以按预期进行,那么您就可以了。
blubberdiblub '16

7

这对我有用

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

我做了同样的..现在如何打开记事本++以提交消息?什么是?请您举个例子
shridutt kothari

4
-multiInst像其他答案一样,在此处添加选项至关重要。
blubberdiblub '16

1
这不好,有两个原因。首先,如果C:卷是8.3 filename选项关闭的NTFS,则根本没有C:\Progra~1。其次,可能有多个 C:\Progra*目录,因此~1后缀不一定是有效目录。
kkm

5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""

那帮了我大忙!然后,.gitconfig看起来像:[核心]编辑器= \“ c:\\ Program Files(x86)\\ Notepad ++ \\ notepad ++。exe \” -multiInst -nosession -noPlugin
AtliB

看到投票最高的答案,其中包括(我读得不够多)
AtliB


3

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

git config --global core.editor notepad++

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

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

(正如我在“ Windows的Gitcore.editor ”中详细介绍的)

在这里,您可以找到一些在说明Notepad ++ 命令行选项时可以使用的选项


1

更新2015

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

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

没有包装脚本或其他欺骗手段。无需在路径中包含Notepad ++。


2020年更新:您似乎错过了打开新记事本实例的选项。我从cmd.exe的使用git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin",它是由两个工作cmd terminalgit bash
oleksa

1

我正在使用Windows 10和notepad ++,并且收到此错误消息:

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

因此,我以这种方式进行设置:

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

它有效


0

请遵循以下说明,

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

  2. 然后在您的系统上安装gitpad。请注意,我最后一次检查下载链接已损坏,因此请按照说明此处下载。

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


0

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

cd ~
touch .bashrc

然后我在Windows资源管理器中找到.bashrc文件,用记事本++打开它并添加

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

并按预期在Notepad ++中打开文件。


0

这是Cygwin的解决方案:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. 如果没有路径,则没有路径

  2. 如果路径为空,则传递空路径

  3. 如果path不为空,则转换为Windows格式。

然后设置这些变量:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR允许脚本与Git一起使用

  2. GIT_EDITOR允许脚本使用Hub命令

资源

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.