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

PHL*_*LAK 209 git configuration text-editor notepad++ msysgit

如何在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
Run Code Online (Sandbox Code Playgroud)

zum*_*ard 431

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

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

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

或者,可以在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"
Run Code Online (Sandbox Code Playgroud)

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

  • 愚蠢的是 - notabbar将永久禁用标签栏,而不仅仅是该会话.当正常启动notepad ++时,您必须进入设置对话框再次启用标签栏. (15认同)
  • 也适用于git扩展.请注意,对于64位窗口,条目是"C:/ Program Files(x86)/ Notepad ++/notepad ++.exe"-multiInst -notabbar -nosession -noPlugin` (9认同)
  • 我不得不使用:`git config --global core.editor"c \:/ Program\Files\\(x86 \)/ Notepad ++/notepad ++.exe -multiInst -nosession -noPlugin"`...不确定为什么. (4认同)
  • @CoDEmanX没有`-multiInst`它可能只是发信号通知已经运行的Notepad ++打开文件然后立即退出.如果编辑器希望它仅在完成编辑时返回(即同步操作,如调用vi时的情况),则这可能是一个大问题.例如,尝试交互式rebase(`git rebase -i`).如果这仍然按预期工作,那么你没事. (2认同)

Von*_*onC 75

2010-2011更新:

zumalifeguard解决方案(upvoted)比原始解决方案简单,因为它不再需要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 "$*"
Run Code Online (Sandbox Code Playgroud)

确实有效.这些命令被解释为shell脚本,因此想要在sh脚本中包装任何Windows命令集.
(正如Franky 评论:"记得.sh用Unix风格的行结尾保存文件或收到神秘的错误消息!")

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

注意' -multiInst'选项,用于确保来自Git的每个调用的记事本++的新实例.

另请注意,如果您在Cygwin上使用Git (并希望使用Cygwin的Notepad ++),那么scphantm在" 使用Noteg ++ for Cygwin中的Git "中解释说,您必须注意:

git传递它的cygwin路径,npp不知道该怎么做

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

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

多行可读性:

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

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

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

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

所以请使用:

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

那是:

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

如果要将脚本' npp.sh'放在带空格的路径中(如' c:\program files\...'所示),则有三个选项:

  • zumalifeguard的答案对我有用.它不需要shell脚本包装器. (2认同)

Tim*_*ott 6

这适合我

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe
Run Code Online (Sandbox Code Playgroud)

  • 添加`-multiInst`选项在这里至关重要,就像在其他答案中一样. (4认同)

小智 5

git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""
Run Code Online (Sandbox Code Playgroud)


AXO*_*AXO 5

作为混帐的Windows v2.15.0(2017年10月30日),它现在可以配置nano记事本++作为Git的默认编辑器来代替vim.

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

在此输入图像描述