VundleVim / Vundle.vim

Vundle, the plug-in manager for Vim
http://github.com/VundleVim/Vundle.Vim
MIT License
23.91k stars 2.58k forks source link

Cannot install plugins on Windows #779

Open sryze opened 7 years ago

sryze commented 7 years ago

I installed Vim 8.0 on Windows 10 but can't get vundle to install the plugins listed in .vimrc, each time I run :PluginInstall I get this error:

C:\Program' is not recognized as an internal or external command,

and a lot of other errors, but I think this is the main one.

Vim was installed to C:\Vim.

ryanoasis commented 7 years ago

@sryze can you post a minimal vimrc ?

Have you looked into the Windows Setup?

therealplato commented 7 years ago

@sryze I'm experiencing this with current 64 bit nightly VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Apr 23 2017 22:02:16:

I have bundle/Vundle.Vim and bundle/YouCompleteMe folders, I do not have a bundle/vim-go folder. Vundle.vim folder contains up-to-date clone of this repo. I have manually deleted some folders from bundle/ while trying to start my config fresh. But now I'm stuck because I can't find where Vundle.Vim is storing the state.

:PluginList shows Vundle.Vim and vim-go. I have tried running :PluginClean, it warns that it will remove YouCompleteMe, flashes an error for an instant, then shows error 'C:\Program' is not recognized as an internal or external command, operable program or batch file.

The instantaneous error is

Processing 'YouCompleteMe'
Error detected while processing function vundle#installer#clean[25]..<SNR>20_process[11]..vundle#installer#run[8]..vundle#installer#delete[9]..<SNR>20_system:
line    1:
E484: Can't open file C:/Users/there/AppData/Local/Temp/VIoDAA3.tmp
Error detected while processing function vundle#installer#clean[25]..<SNR>20_process:
line   13:
E121: Undefined variable: s:last_status
E15: Invalid expression: 'error' == s:last_status
line   17:
E121: Undefined variable: s:last_status
E15: Invalid expression: 'updated' == s:last_status && empty(msg)

My $/_vimrc is this with some commented lines:

set nocompatible              " be iMproved, required
filetype off                  " required
set rtp+=$HOME/vimfiles/bundle/Vundle.vim/
call vundle#begin('$HOME/vimfiles/bundle/')
Plugin 'VundleVim/Vundle.vim' " let Vundle manage Vundle, required
"Plugin 'Valloric/YouCompleteMe'  " see installation instructions at https://github.com/Valloric/YouCompleteMe
Plugin 'fatih/vim-go'
call vundle#end()            " required
filetype plugin indent on    " required

Other details:

$ env | grep -i vim
EDITOR=vim
VIM=/c/Users/there/vimfiles
PWD=/c/Users/there/vimfiles/bundle/Vundle.vim
VIMRUNTIME=/c/vim

$ git --version && curl --version
git version 2.12.0.windows.1
curl 7.53.0 (x86_64-w64-mingw32) libcurl/7.53.0 OpenSSL/1.0.2k zlib/1.2.11 libssh2/1.8.0 nghttp2/1.19.0 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2 HTTPS-proxy Metalink
therealplato commented 7 years ago

The YouCompleteMe errors and incorrect :PluginList output persists after removing everything in $VIM/bundle and re-cloning Vundle.Vim

I failed to mention I'm on windows 10 running git bash in hyper, with recent vim binaries

therealplato commented 7 years ago

attn @sryze , xposting workarounds from vim-plug#539:

:PlugInstall works fine if i start gvim from the windows start menu.

I discovered i'm able to get it working by changing &shell in .vimrc to 'cmd.exe'. I'm not sure how that effects other things i may try to do, but it makes PlugInstall work!

"let &shell='/usr/bin/bash'
let &shell='cmd.exe'

The second workaround fixed it for me

therealplato commented 7 years ago

perhaps @janlazo's fix is portable to vundle? https://github.com/junegunn/vim-plug/pull/676

janlazo commented 7 years ago

Vim picks up SHELL and if it is not cmd.exe, Vim will use the default values for shell-related options so the user has to revert all of those options themselves. Windows Vim does not work well with shells other than cmd.exe. For any command requiring the shell, after set shell=cmd.exe, there are at least 2 options:

  1. Revert all shell-related options to work with cmd.exe (best done by the user in their vimrc)
  2. Put the command in a temporary batchfile (make sure this batchfile has the bat or cmd extension)

junegunn/vim-plug#676 opts for the batchfile because it is already tested in the Vim plugin of fzf and fzf.vim. Note that the escape code for option 1 is different from option 2 because %% is a literal % in a batchfile only. Also, literal escaping is used in vim-plug.

samaursa commented 6 years ago

I am experience the same issue. PluginList shows the plugins as installed but they are not as the commands don't show up and when I search for the plugin name system wide (using the Everything search plugin), there are no files related to it.

EDIT: I tried the let &shell='cmd.exe' fix posted above but it didn't work :(

CrispyDrone commented 3 years ago

Is there any way to keep using bash while having Vundle work? Can I instruct vundle to use cmd.exe but keep using bash myself?