我在这个帖子中找到了答案,但是我认为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
针对babun用户的更新2!
好的,既然一开始已经尝试过很多方法,我最终放弃了原始的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 破坏您的干净 shell,您不再需要 "disown"。
附注:现在唯一剩下的烦恼是,在关闭您启动的所有 gvim 实例之前,您无法 "退出" babun shell。也许有人可以解决这个问题。我试过了。当您键入 exit 时,它只会挂起,直到您退出所有 gvims 为止。