找到了这个帖子,我发现jens的答案是不可接受的。我们不是要求被告知不要这样做。我不喜欢其他答案,或者总是有一些怪癖,比如未使用设置或弹出额外的命令行窗口。我做了一些挖掘,这对我有用。没有额外的命令行框,它使用我正确的 gvim 设置。
alias gvim='HOME=/cygdrive/p/ cygstart /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe'
您只需将 HOME 更改为您自己的。要找出放在那里的内容,从 windows 运行 gvim,然后输入 ":echo $HOME" 并按回车键,在我的情况下它显示 P:\ 以便转换为 /cygdrive/p/
此外,如果您的 gvim.exe 位于不同的目录/版本中,您需要进行调整。
现在,当我在 cygwin 命令提示符下键入“gvim script.sh”时,它会启动带有文件的 gvim,一切都很好!
更新
我找到了一种更好的方法来做到这一点。使用别名占用了我运行 gvim 的会话,我希望它作为一个单独的进程启动,使用“gvim &”是不雅的,因为它在启动时列出作业编号,并在完成时显示“完成”行。我太挑剔了,所以我想出了如何通过使用函数来整理所有内容。
只需将其添加到您的 .bash_functions 文件中,它建立在上一节关于主目录和反斜杠使用的基础上。
gvim() {
ORIGHOME=$HOME
HOME=/cygdrive/p/
/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe $1 & disown
HOME=$ORIGHOME
} 2>/dev/null
更新 2 给 babun 用户!
好的,自从最初与这个搏斗后,我最终放弃了原来的 cygwin 安装,转而使用 babun,对于那些想要在 Windows 中没有完全虚拟化的 linux 功能的人来说,这似乎是一个不那么麻烦的设置。当然,我的 gvim 启动脚本坏了,我必须在我的 .zshrc 文件中执行以下操作(babun 使用 zsh,起初我拒绝并将其切换到 bash,但后来我认为他们一定有理由,他们做到了,我喜欢它)
gvim() {
OLD_HOME=$HOME
OLD_VIMRUNTIME=$VIMRUNTIME
export HOME=/cygdrive/c/Users/gmitchell/
export VIMRUNTIME="C:\Program Files (x86)\VIM\vim74"
TARGET=$(cygpath -w $1)
(/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe $TARGET &)
export HOME=$OLD_HOME
export VIMRUNTIME=$OLD_VIMRUNTIME
}
*注意:周围的弧形大括号 ( ) 可防止作业 ID 弄乱您的干净外壳,并且您不再需要“拒绝”
PS 现在唯一剩下的烦恼是,在您启动的所有 gvim 实例都关闭之前,您无法“退出” babun shell。也许有人可以自己弄清楚。我试过了。当您键入 exit 时,它会挂在那里,直到您退出所有 gvim。