Como executar o comando Vim a partir do shell?

12

Esta pode ser uma pergunta idiota, mas tenha paciência comigo.

Estou automatizando algumas das coisas usuais que faço ao configurar um novo ambiente de trabalho e gostaria de automatizar o comando Vim :BundleInstall (para instalar todos os meus plugins do Vim).

É possível executar isso a partir do shell?

Alternativamente, é possível ter o script executando o Vim, executar :BundleInstall, espere até que termine e saia?

Obrigado.

imiric
fonte

Respostas:

14

De vim(1) página man:

+ {command}

-c {comando}

{command} será executado após o primeiro arquivo ter sido lido. {command} é interpretado como um comando Ex. Se o {command} contiver espaços, ele deverá ser colocado entre aspas duplas (isso depende do shell usado). Exemplo: Vim "+ set si" main.c

Nota: Você pode usar até 10 comandos "+" ou "-c".

Ignacio Vazquez-Abrams
fonte
3
Obrigado! Eu sabia que me sentiria idiota ...: - / Me faz bem por não ler a manpage completamente. Acabei usando vim +BundleInstall +qall!.
imiric
3

Você pode executar seu comando assim:

vim -E -c BundleInstall -c q

o que evitará abrir uma janela do Vim no seu terminal.

Nota: Minha primeira resposta incluiu o -s opção que eu precisava para outro aplicativo, mas estava incorreto aqui, porque impediu muito da inicialização do Vim, incluindo o plugin que definiu o BundleInstall comando.

garyjohn
fonte
1
Obrigado, mas por alguma razão não vai funcionar para mim.
imiric
1
Agora vejo porque. eu esqueci disso -s faz mais do que inibir certas mensagens - também inibe as inicializações - então a definição de BundleInstall não estava sendo gerada. Uma maneira de corrigir isso seria adicionar uma opção como essa antes do primeiro -c: --cmd 'runtime plugin/bundle.vim'. Edite esse nome de arquivo para se adequar. Vejo :help -s-ex.
garyjohn
2

Embora a receita específica do vim acima seja a maneira certa de fazer isso, você sempre pode usar uma abordagem mais geral como autoexpectar .

AnonymousLurker
fonte