dos2unix命令找不到_还有比我更痛苦解决gVim 8.1 不能运行本地命令问题经历吗

这是一个不应该存在问题的问题!当gvim安装好以后,windows中的各种环境变量早已经设好,只要敲上:! 命令,所有命令执行不是so easy?事实证明我还是太幼稚了,结果这个问题折腾了我半天。

先把背景交代下,我准备在vim中安装vim plug,这是个管理插件的插件。这个插件需要用到git命令来远程下载插件,我在第一次使用的时候,提示我git命令找不到。这个我懂,我赶紧把git for windows装了,控制台下试了一下,一切ok啊。

然而在vim中敲 :!git ,依然提示我命令找不到。我~

找不到爹,我要把你爹拷的到处都是,不怕你找不到,没准你还得认好几个。vim里面自带的命令你能认吧,就往那下面搁。拷贝git.exe到C:Program Files (x86)Vimvim81(后面简称vim下的git)下,坐等成功。敲!git,一切ok啊,没问题了。一切结束了。vim plug早已经安装好,配置文件也改了,试一下安装命令:PlugInstall ,咦?0.04s就结束,这网速,给力啊,不对,为啥提示安装的两个插件都是红叉叉,没安装成功?我~~

我git可都安装好了啊,不是我的问题。在外面控制台试验一下git clone,下载哪一个插件都远远超过10s了,也正常,为啥安装调用了同样程序,它不行呢,肯定是vim plug的问题啊。ok,上网搜索vim plug插件使用,检查配置,尝试,失败,尝试,失败。。。严重怀疑vim plug有bug。灵光一现,是不是git有问题。理论上外部控制台的git和拷到vim文件夹下的git是一模一样的,但是执行路径确实不一样,我用vim下git的绝对路径去试试看。这一试还真试出问题来了,用vim下git执行clone有问题,没做对。又前进一步,为啥?不知道。但方法是有的,是不是git的bin下的东西没拷贝全,导致关联的程序启动不起来。没关系,全拷了,一定ok吧?哈哈,结果是,又出错了,直接建个快捷方式吧,也不行,我~~~

我不折腾了,我换gvim的老版本,不陪你玩了。网上大部分是7.x的教程,就用它,别人不出错,我也不出错吧。好了,下载了7.2版本,安装完成一切准备就绪,直接在vim中敲!git,ok,你看没任何问题,哈哈哈,8.1坑人啊,用PlugInstall命令,没问题,大功告成。看来瞎折腾新版本成本太高啊,还好还好,及时止损。用plug下载安装好ultisnips插件,重新打开vim,一行提示跳出:ultisnips 只支持gvim 7.4后的版本,我简直~~~~

果断要下载7.4,官网等半天发现就没有7.4及以上的,持续~~~~~

对了,原来7.2版本的时候我下载是portable的,但还是安装了,我把里面gvim在桌面上做了一个链接,发现链接的运行有点问题,直接去vim安装路径下打开gvim运行命令却没有问题,难道问题在这?还真是。明白了8.1也能用,但是需要到vim安装目录去打开,那你塔喵的在桌面上建个快捷方式干嘛呢,不建立快捷方式我一次一次点进去,目录长的都找不到回家的路了。再想,既然命令执行位置有关系,那么可能与环境变量有关,开头没执行就是环境变量没找到或者就没找,不管他,在执行命令我强制执行环境变量。

问题是我咋执行环境变量,临时设置环境变量只对当前控制台管用,而vim执行的控制台我控制不了。看一下出错提示就可以猜测出来,vim的命令应交给vimrun这个程序执行,vim弹出一个控制台,执行!中的命令。所以我就必须在这个控制台下设置环境变量。首先我必须也获得这个控制台环境,这个太难了,因为vimrun设定是点击任意字符就退出,我要改,最好就有源代码?还真有,好了,这样问题就简单了,写一个bat,在里面设定好路径,比如:

set path=C:aabin;%path%,在vimrun.c中可以看到核心就一句代码:retval = _wsystem(p);,其中字符串p指的是执行的命令。在执行此之前:加一句:

retval = _wsystem(L"call D:env.bat");

这一句确实也执行了,但发现还是没起作用,不懂为啥,猜测是其实环境变量没设置在当前的控制台上,转瞬即逝了。这样不行直接就用wgetenv 和 _wsetenv 。相关代码如下:

ptemp

将新生成的vimrun代替原来的,终于一切就ok了。

=======================================================

更新一下,上面一通操作这样!git命令能够打开并且没有问题了,但是vim plug还是发现不了命令,显示如下:

29201108de50a55b886fe0586bd5f576.png
环境变量都已设好,仍出现找不到git的错误

如果拷进去,实际执行结果如下:

d69b506f2e0505a48874668b42814451.png
将git.exe拷贝到vim文件夹下,但实际上git命令执行的有问题

但红色的×说明啥都没装。

还是考虑到环境变量根本没用上,采用一个bat启动脚本来暂时解决这个问题:

脚本如下startvim.bat:

call 

env.bat 内容如下:

set PATH=%PATH%;C:Program FilesGitcmd

启动下startvim.bat,这时候能够正常使用。

e4c69ca6826da1de483c1901b95cbbb9.png

总结:

1)如果环境变量设定成功,在cmd能正常使用git命令,但vim内使用命令!git却发现找不到命令,考虑将参考上文将vimrun文件略作修改,源文件中增加环境变量;

2)如果vim plug中执行出错,应在gvim启动前设定环境变量。

3)1中的问题可以尝试2的办法,即在vimrun之前加一个bat包一下,我没有试验。

-------------------------------我是问题的分割线----------------------------------

谢谢朋友回复,正如我在文章开头指出的,这是一个不应该存在问题的问题。我把原来的vimrun先改成原来的,可以看看在Vim中执行!git和cmd中执行git是什么效果:

cmd中执行git:

533bb8da7a04fae622f52f9bb2de08ce.png

vim中执行git:

dbc7d8e77ad4635eeb3e0153332e08f5.png

弹出:

bec9db61a9d8fcb1b715aecc31484aa9.png

修改vimrun文件后:

26e68af9a50501c64dd8bfe54b973d0e.png

可见修改后得到很好的解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值