2010-2011 年更新:
zumalifeguard的解决方案(赞成)比原来的解决方案更简单,因为它不再需要 shell 包装脚本。
正如我在“如何设置编辑器以在 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 评论.sh
的那样:“请记住以Unix 风格的行结尾保存您的文件,否则会收到神秘的错误消息!”)
有关 SO 问题的更多详细信息如何设置编辑器以在 Windows 上使用 Git?
注意 ' -multiInst
' 选项,以确保每次来自 Git 的调用都有一个新的 notepad++ 实例。
另请注意,如果您在Cygwin上使用 Git (并且想使用 Cygwin 中的 Notepad++),那么scphantm在“在 Cygwin 中使用 Notepad++ for 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
选项:
在 rebase 期间禁用选项卡没有好处,但会对记事本的一般可用性造成很大损害,因为-notab
它成为默认设置,并且Settings>Preferences>General>TabBar> Hide>uncheck
每次在 rebase 后启动记事本时都必须这样做。这是地狱。你推荐了地狱。
所以改用:
#!/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"'