Windows下的gVim用Cygwin的bash

131 views
Skip to first unread message

Ricky

unread,
Nov 20, 2009, 6:46:21 AM11/20/09
to vim...@googlegroups.com
谁这样玩过,Windows下的gVim设置为用Cygwin的bash:

set shell=X:/Cygwin/bin/bash.exe

我这样设置后发现PATH中的shell脚本可以直接运行了,不仅仅是可以调用可执行文件,
这样基本和在Unix下用gvim没差别,当然PAHT要包含Cygwin/bin这个目录.

不过还是存在问题的,很多插件都用到expand()函数来展开文件的路径,对文件的路径处理需要自己修改,
比如Unix的/会被展开成\,带有空格的文件名仍然没法传递到命令中去,
懒点的办法就是把路径用引号括起来再传递给命令

我试过escape(substitute(expand("%"),"\\","/","g"), ' '),
不过好像还是没法正确传递,不管了,反正有简单的解决办法...

Yongwei Wu

unread,
Nov 20, 2009, 6:52:38 AM11/20/09
to vim...@googlegroups.com
我试过,很不容易玩,后来不玩了。真想折腾,去看看这几个选项:

:help shellquote
:help shellxquote
:help shellslash

2009/11/20 Ricky <rich...@live.com>:


--
Wu Yongwei
URL: http://wyw.dcweb.cn/

Ricky Wu

unread,
Nov 20, 2009, 7:07:43 AM11/20/09
to vim...@googlegroups.com
我现在还没发现问题,看来要多用才遇到
都快习惯在gvim和cygwin的窗口之间切换了

--------------------------------------------------
From: "Yongwei Wu" <wuyo...@gmail.com>

Yongwei Wu

unread,
Nov 20, 2009, 8:11:23 AM11/20/09
to vim...@googlegroups.com
刚试了一下,单设:

set shell=C:\cygwin\bin\bash.exe
set shellcmdflag=-c
set shellquote=\"

基本可以工作,但是,碰到这样的东西就出问题了:

:!echo "Hello\" & World"

主要是碰到双引号的问题会很多。在cvsmenu中,造成的结果是commit的log
message一含有引号就不能正确工作。我没找到使用bash时的完美解。

2009/11/20 Ricky Wu <rich...@live.com>:

Ricky Wu

unread,
Nov 20, 2009, 8:57:28 AM11/20/09
to vim...@googlegroups.com
这确实是个麻烦的问题,win32的vim可以直接调用bash就好了,梦想...
刚才试了下
bash.exe -c 'echo "Hello\" World"'
是可以工作的,双引号可以修改vimrun的代码解决,&这玩意儿无解

Ricky Wu

unread,
Nov 20, 2009, 11:33:54 PM11/20/09
to vim...@googlegroups.com
比较过bash里面和通过cmd.exe调用bash是有所不同的
echo "Hello\" & World"可以在bash里很好的运行,但通过cmd.exe就不行了,
这个方法或许可行,那就是绕开cmd.exe来调用bash:

http://code.google.com/p/puttycyg/
puttycyg可以用来代替windows console连接本地cygwin.

有两个方案,通过vimrun调用puttycyg启动bash,把命令传递给bash执行
通过vim调用puttycyg(用puttycyg替换vimrun)启动bash,把命令传递给bash执行

两种方法都试过,虽然都能启动puttycyg进入到bash命令提示符窗口,但是显然没法直接传递命令并执行
好在puttycyg是开源的,有兴趣可以改改应该可以实现,不过俺的c不咋的,就不好意思动了


--------------------------------------------------

Nggu Zhang

unread,
Dec 6, 2012, 4:11:27 AM12/6/12
to vim...@googlegroups.com
请问这个写在gvim的哪个文件中~
谢谢~
set shell=X:/Cygwin/bin/bash.exe

在 2009年11月20日星期五UTC+8下午7时46分21秒,Ricky J. Ng写道:

Ricky

unread,
Dec 6, 2012, 5:40:03 AM12/6/12
to vim...@googlegroups.com
当然是vimrc文件,shell是个vim的参数
我后来的解决办法是把shell脚本编译成可执行文件直接调用
--
要退订此论坛,请发邮件至 vim-cn+un...@googlegroups.com
更多选项,请通过 http://groups.google.com/group/vim-cn 访问该论坛
 
 
 

Reply all
Reply to author
Forward
0 new messages