9

这是这个问题的延伸

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

我已经为我的 shell 脚本做了所有我能想到的组合。当我有我的 cygwin 控制台时(如果重要的话,我使用 mintty)我可以输入

npp {file}

并且文件正确打开。但是当我做一个

git rebase -i HEAD~5

npp 打开一个空白的新文档,而不是控制变基的交互式文件。知道为什么会这样吗?

混帐--版本
混帐版本 1.7.9

Windows 7 机器和 NPP 5.9.8 上的最新版本 cygwin

另外,这是我的包装脚本

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar \
  -nosession -noPlugin "$*"
4

6 回答 6

17

我对我的 cygwin 路径问题是正确的。我把我的外壳包装器改成了这个

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

它工作得很好。

于 2012-04-18T13:08:59.883 回答
5

这是没有包装脚本的完整解决方案

这些行假定您使用的是 64 位版本的 Windows。

从命令提示符 (Cygwin) 运行以下命令:

git config --global core.editor \
  "'$(cygpath -u "C:\Program Files (x86)\Notepad++\notepad++.exe")' \
  -multiInst -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
于 2012-10-04T11:46:10.727 回答
4

我创建了一个简单的脚本,用于运行带有 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 配置中使用它(假设是PATH 中某处cygrun的符号链接):cygrun.sh

[core]
    editor = cygrun 'C:/Program Files/Notepad2/Notepad2.exe'
[difftool "diffmerge"]
    cmd = cygrun 'C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe' \"$LOCAL\" \"$REMOTE\"

这样一个脚本就可以适应许多类似的用例,不需要每次都创建一个单独的包装器。从命令行使用也很方便。

于 2016-04-18T03:07:29.777 回答
0
#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. 如果没有路径,则不传递路径

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

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

然后我设置这些变量:

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

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

来源

于 2016-12-28T00:15:12.863 回答
0

有一个没有包装脚本的现有解决方案看起来很有希望,但是使用 cygwin git 和 cmd.exe,每次只会打开一个空文件。

要解决这个问题,你需要在你的 .gitconfig 中有这个(它与 --global 将驻留在你的 cygwin 主文件夹中):

[core]
        editor = '/cygdrive/c/Program Files (x86)/Notepad++/notepad++.exe'  -multiInst -notabbar -nosession -noPlugin $(cygpath --windows "${1}")

关键$(cygpath --windows "${1}")在最后。

似乎这将适用于 cmd.exe:

git config --global core.editor "'/cygdrive/c/Program Files (x86)/Notepad++/notepad++.exe'  -multiInst -notabbar -nosession -noPlugin $(cygpath --windows ${1})"
于 2021-06-19T06:54:29.253 回答
0

对于使用 cygpath 处理记事本的参数文件路径,我将建议一个替代的简单答案。

在 Windows 中创建指向 cgywin 下主目录的符号链接。这样记事本就可以通过符号链接找到输入文件。

在我的电脑上,我用“以管理员身份运行”打开了cmd ,然后在下面输入:C:\

    C:\>mklink /D home cygwin64\home

有了这个,您可以简单地配置 git 如下(取自先前的答案)并假设记事本安装在以下目录中:

    git config --global core.editor '/cygdrive/c/Program Files (x86)/Notepad++/notepad++.exe'
于 2021-12-28T07:07:34.910 回答