2

I'm setting up a vim environment install script. I'm using vim-plug for plugin management.
What I'd like to do is, from the install.sh, run vim and call PlugInstall to trigger plugin download and install.
The plugin file is set up to also set plugin-specific settings, so creates errors relating to undefined variables when the plugins aren't installed (i.e., the first time it starts up.) This requires user input of enter to bypass.

Ideally, the process would display the PlugInstall window and require no user input, without showing plugin error messages.
Second-best would be this, but the error messages are still seen (still without requiring input).
3rd best would be to have no output, but quietly wait until the plugins are, in fact, installed.

These are the commands I've tried so far, with their results.

Command runs with no error, but also doesn't actually do anything:

echo "PlugInstall" | vim -es
echo "PlugInstall|qa!" | vim -E

Plugin errors, enter ex then get stuck (treats arg as filename):

vim -ecs PlugInstall\|qa!
vim -ec silent PlugInstall\|qa!
vim -ec silent exec PlugInstall\|qa!

"Error reading input". Still get plugin errors:

echo ":PlugInstall" | vim

Plugin errors requiring enter to continue, then works as desired:

vim -c PlugInstall\|qa!
vim +PlugInstall! +qa!

Edit: Further experimentation managed to get a chimera working. This satisfies second-best outcome. However, it ruins the shell session: input doesn't show up, and the prompt is seriously misaligned.

printf "\n" | vim -c PlugInstall\|qa!
2

I successfully used this command in a non-interactive way, but you have to specify the file containing the Plug calls:

vim -E -s -u "$HOME/.vimrc" +PlugInstall +qall

You might want to read more on how silent mode works with :help -s-ex, and maybe add the verbose argument (-V) for debugging.

  • It might be my terminal (WSL), but that not only didn't install the plugins, but ruined the shell session same as my final attempts. – BlueDrink9 Mar 14 '18 at 20:28
  • What did finally work (Thank you!) was vim -E +PlugInstall +qall. (My vimrc was installed by that point, so I didn't need to specify it. It loaded the plug calls and their settings, which was why I was trying to get around the errors when they were missing.) Still a minor problem with the terminal subsequently, in that the cursor went missing. But otherwise works. – BlueDrink9 Mar 14 '18 at 20:32
  • For whatever reason, adding the -s flag stops it from actually installing the plugins. – BlueDrink9 Mar 14 '18 at 20:41
  • Also for completeness, vim -E +PlugInstall +qall still showed the errors. It just didn't require input to bypass them. Fulfilled second-best outcome, with a usable terminal afterwards (albeit still not fully usable). – BlueDrink9 Mar 14 '18 at 20:44
  • 1
    At the end of :h silent-mode you can read that Initializations are skipped (except the ones given with the "-u" argument): adding -s has no effect without an explicit vimrc. Silent mode may also prevent the terminal issues. – LEI Mar 14 '18 at 21:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.