发现这个线索,我觉得从jens不可接受的答案。我们不是要求被告知不要这样做。我不喜欢其他答案,总是有一些怪癖,比如没有使用的设置或弹出一个额外的命令行窗口。我做了一些挖掘,这对我有用。没有额外的命令行框,它使用我正确的gvim设置。
alias gvim='HOME=/cygdrive/p/ cygstart /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe'
你只需要改变你自己的HOME。为了找出要在那里运行gvim,然后放入“:echo $ HOME”,并在我的情况下输入显示P:\,以便翻译为/ cygdrive/p/
此外,如果您的gvim.exe处于不同的目录/版本中,您需要进行调整。
现在,当我在cygwin命令提示符下键入'gvim script.sh'时,它会用该文件启动gvim,所有的都很好,很整洁!
UPDATE
我找到了一个稍微好一点的方式来做到这一点。使用别名绑定我的会话,我运行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的,这似乎是在窗户那些想要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。
谢谢你的烦恼!这个工作就像我想要的一样,有一个缺点:HOME按照gvim的方式设置,而不是我的cygwin shell想要的方式。另外,我认为对于C:\ P,你会想使用'/ cygdrive/c/P'。 – jspencer
你是正确的,它应该是/ cygdrive/c/P,但当我以某种方式键入它时,它显示P:\,因为我的Windows homedir被设置为P驱动器。我没有注意到cygwin vs gvim home设置的问题,我只是试了一下,你是正确的,它会让我的cygwin shell改变$ HOME,我将通过命令修复我的脚本以携带原始的$ HOME。 – low351
@jspencer,刚注意到你发布了一个修复程序,做得很好。感谢像我一样挑剔:)我正在使用你的版本... – low351