使用记事本++;对于cygwin中的git
这是这个问题的延伸 我已经完成了我能想到的shell脚本的所有组合。当我有了cygwin控制台(如果有必要的话,我会使用mintty),我就可以打字了使用记事本++;对于cygwin中的git,git,cygwin,notepad++,Git,Cygwin,Notepad++,这是这个问题的延伸 我已经完成了我能想到的shell脚本的所有组合。当我有了cygwin控制台(如果有必要的话,我会使用mintty),我就可以打字了 npp {file} 并且文件正确打开。但是当我做一个 git rebase -i HEAD~5 npp打开时会显示一个空白的新文档,而不是控制重新基准的交互式文件。你知道为什么会这样吗 git --version git version 1.7.9 我的cygwin路径问题是正确的。我把我的外壳换成了这个 #/垃圾箱/垃圾箱 'C:/Pr
npp {file}
并且文件正确打开。但是当我做一个
git rebase -i HEAD~5
npp打开时会显示一个空白的新文档,而不是控制重新基准的交互式文件。你知道为什么会这样吗
git --version
git version 1.7.9
我的cygwin路径问题是正确的。我把我的外壳换成了这个
#/垃圾箱/垃圾箱
'C:/ProgramFiles(x86)/Notepad++/Notepad++.exe'-multiInst-notabbar\
-nosession-noPlugin“$(cygpath-w“$*”)
这是一个没有包装器脚本的完整解决方案 这些行假定您使用的是64位版本的Windows 从命令提示符(Cygwin)运行以下命令: git config--global core.editor\ “$(cygpath-u“C:\ProgramFiles(x86)\Notepad++\Notepad++.exe”)”\ -多仪器-notabbar-nosession-noPlugin”
这是一个示例,说明了在执行命令后,.gitconfig的外观:
[core]
excludesfile = /home/Aternus/.gitignore_global
autocrlf = input
safecrlf = true
editor = '/cygdrive/c/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
我创建了一个简单的脚本,用于使用UNIX样式的路径参数运行任意Windows命令: cygrun.sh
#!/bin/sh
if test -z "$1"; then
echo "Usage: $(basename "$0" .sh) program [argument]..."
exit 1
fi
program=$1
shift
if test $# -ge 0; then
IFS=$'\n'
exec "$program" $(cygpath -w "$@")
else
exec "$program"
fi
下面是我如何在git配置中使用它(假设cygrun
是路径中某个地方的cygrun.sh
符号链接):
通过这种方式,一个脚本可以适合许多类似的用例,无需每次都创建一个单独的包装器。它也可以方便地从命令行使用。#/垃圾箱/破折号-e
如果[“$1”]
然后k=$(cygpath-w“$1”)
elif[“$#”!=0]
然后k=
fi
Notepad2${k+“$k”}
export EDITOR=notepad2.sh
导出GIT_EDITOR='dash/usr/local/bin/notepad2.sh'
Cygwin,很有趣。我的脚本将在DOS或mwin bash会话中与msysgit一起使用。对于Cygwin,不应该使用Cygwin路径吗
/cygdrive/c/Program Files(x86)/…
posix已打开,因此cygwin中的windows路径可以正常工作,此外,我尝试了两种方法,但都不起作用。您是否检查过这一点?我正在构思一个想法,因为这是cygwin版本的git,也许问题是git正在传递一条cygwin路径,而npp不知道如何处理它。我正在看调用cygpath来纠正错误的shell脚本。非常好(+1)。我已经编辑了原始答案()以包含您的结论(并引用您的答案)。我正在使用cygwin,对\有一些问题,所以我将此更改为:#/bin/sh'C:/Apps/Notepad++/Notepad++.exe'-multiInst-notabbar-nosession-noPlugin“$(cygpath-w“$*””),现在它对我有效。非常感谢。你说的“壳包装”是什么意思?我对Sublime文本有这个问题,无法解决。当我执行Git提交时,它会打开一个不存在的空文件。它寻找这样的路径:“C:\C\Users\Jordan\Desktop\test\.git\COMMIT\u EDITMSG”这可能只适用于Windows版本的git,而不是Cygwin版本的,因为Cygwin的git将使用Cygwin指向以下文件的路径执行Notepad++.exe:Notepad++.exe/home/user/repository/file.extension
。我肯定Windows记事本++找不到这样的文件。即使你在Cygwin的目录外重新存储,它看起来也是这样的:notepad++.exe/cygdrive/d/repository/file.extension
。当我使用它时,我会在执行交互式重定基线时打开一个空的记事本窗口,例如…我脚本的改进版本,也可用于使用Windows路径运行Cygwin工具:使用-w
选项可使用UNIX路径运行Windows工具,而不使用任何选项(或-u
)可使用Windows路径运行Cygwin工具。
[core]
editor = cygrun 'C:/Program Files/Notepad2/Notepad2.exe'
[difftool "diffmerge"]
cmd = cygrun 'C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe' \"$LOCAL\" \"$REMOTE\"