Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用记事本++;对于cygwin中的git_Git_Cygwin_Notepad++ - Fatal编程技术网

使用记事本++;对于cygwin中的git

使用记事本++;对于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

这是这个问题的延伸

我已经完成了我能想到的shell脚本的所有组合。当我有了cygwin控制台(如果有必要的话,我会使用mintty),我就可以打字了

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”}
  • 如果没有路径,则不通过任何路径

  • 如果路径为空,则传递空路径

  • 如果路径不为空,请转换为Windows格式

  • 然后我设置这些变量:

    export EDITOR=notepad2.sh
    导出GIT_EDITOR='dash/usr/local/bin/notepad2.sh'
    
  • 编辑器允许脚本使用Git

  • GIT_编辑器允许脚本使用


  • 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\"