如何在Cygwin中启动Windows GUI程序?

6
我在Win7中安装了gVim,并经常使用cygwin。当我在cygwin bashell中输入"vim aaa.c"时,我希望我的Windows程序gVim为我打开aaa.c文件。请问有人知道如何配置才能实现这一点吗?
直接在cygwin shell中输入"notepad"并按回车键是可以的。我知道"notepad"可以在Windows的系统变量"path"中找到,所以它可以工作。我已经尝试将gVim.exe的路径添加到系统变量"path"中,但它不起作用。
PS:如果你在cygwin shell中输入"run notepad",也会启动Windows记事本。但是如何让我的gVim被cygwin识别,就像'notepad'一样呢?我不想每次在cygwin shell中都要输入完整的gVim安装路径。
谢谢!

你确定已经将 PATH 更改应用到了你的 Cygwin 会话中吗?除非重新启动,否则更改不会生效... - einpoklum
纯文本模式的 vim 是否启动?如果是,您需要为 vim 设置别名。 - nneonneo
6个回答

8

最简单的解决方案是在您的 .bashrc 文件中添加以下行:

alias vim="/cygdrive/c/Program\ Files\ \(x86\)/vim/vim73/gvim.exe"

当调用 vim 时,执行 vim foo.txt &,其中的 & 确保进程在后台运行,因此在进程结束之前仍可使用您的 shell。

如果您不想每次都键入 &,请使用以下别名:

alias vim="cygstart /cygdrive/c/Program\ Files\ \(x86\)/vim/vim73/gvim.exe"

最好的解决方案是安装 cygwin vim 而不是使用 Windows 版本。使用 Windows 版本时,您将经常与路径转换进行斗争。确实,您希望它适用于以下所有内容:

vim ~/foo
vim /bar
vim $home/abc
vim /cygpath/c/def
vim "c:\ghi"

有一些复杂的Shell脚本可以帮助缓解问题,但我还没有遇到任何一个没有某些警告的脚本。


太好了!这就是我想要的!我稍微修改了别名:alias vim="cygstart /cygdrive/c/Program\ Files\ \(x86\)/vim/vim73/gvim.exe -p --remote-tab-silent",以便在新标签页中打开新文件。 - actan
是的,我尝试安装了Cygwin Vim,但不知道为什么有些按键不能正常工作,比如cw并没有清除整个单词,而是在单词末尾添加了一个$符号。看起来Cygwin Vim并不好用。 - actan
没错,我也遇到了同样的问题。单词被删除了,但在显示器上并没有清除。这可能是vimrc的问题。老实说,我很少使用cw。不过,我还没有注意到cygwin vim有其他问题。 - Xuan

0
嗯,我有点慢。在您的Windows机器上,有一个名为Cygwin的文件夹,其中包含一个home文件夹和您的用户名文件夹。只需打开文件浏览器,使用Windows gvim进行编辑,然后保存并在bash中运行即可。没有必要把这变成一个困难的问题。

0
我刚刚安装了Cygwin,当我检查我的路径(echo $PATH)时,我发现它基本上继承了Windows路径中的所有内容...所以只要你在Windows路径中有gvim,你就可以在Cygwin路径中使用它...这意味着cygstart gvim将启动gvim...不需要任何奇怪的路径问题...我相信你也可以传递命令行参数并在后台运行它...

0
作为一个快速的hack,尝试使用完整的路径名,cygwin风格,例如/cygdrive/c/Program\ Files/gVim/gVim.exe

这是我键入的程序相关内容:/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe hello.c -- 遗憾的是它并不 - actan
那么,你得到了什么控制台输出?这在其他编辑器中对我有效... - einpoklum
谢谢,上面的命令可以工作,但我希望能够少打一些字,不用输入完整路径来启动gVim。是的,我可以使用向上箭头键获取历史命令,但我正在寻找一种理想的方式从cygwin shell启动gVim...只需要比gvim aaa.crun gvim aaa.c多输入一点点。 - actan

0

对我来说,在cygwin中使用“run”命令是有效的。它类似于OSX cli中的“open”命令。

这是我在我的.bash_aliases文件中如何利用它的方法

# Location of Programs in Win10 that are stored under
# Program Files (x86)
alias x86PF='cd "/cygdrive/c/Program Files (x86)"'

# Navigating to the location of Program Files (x86)
# then switching to the Notepad++ dir
# then calling 'notepad++.exe' with the run command.
# Note the use of the && to run multiple commands in one alias assignement


alias notepad++='x86PF && cd Notepad++ && run notepad++.exe'

在修改别名文件后,不要忘记在 .bashrc 中引用它


0

对我来说,以下内容是有效的:

$ PATH=/cygdrive/c/Program\ Files\ \(x86\)/vim/vim73:$PATH
$ gvim

你可以在~/.profile中添加路径,但是通过控制面板将其添加到Windows PATH变量也可以。 (只需确保使用正常的C:\...表示法即可。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接