2012-10-11 379 views
42

從vim運行shell程序有很多SO問題。我想知道是如果有可能做相反 - 即從命令行運行vim命令

$ vim :BundleInstall 

例如,讓我跑BundleInstall爲腳本的一部分,而不是打開的Vim並在第一手動運行運行?這可能嗎?

回答

73

注意,現在的語法已經改變,該行應爲(按@sheharyar):

vim +PluginInstall +qall 

對於後人,此前,正確的路線是:

vim +BundleInstall +qall 

如若其他任何人比我看起來好!注意:這是在Github README vundle。

+0

這是直接從vundle README這裏:https://github.com/gmarik/vundle – Conner

+1

呀 - 發現,獲取手冊頁 – jvc26

+0

令人驚訝的是有見地的基礎上,這個工作之後。我喜歡我們甚至不需要'man vim',並且感謝SO,向下滾動兩頁。 – peth

0

是否

vim --cmd BundleInstall 

你想要做什麼?

+0

你需要加載的插件後,執行命令。使用'-c'選項 – kev

20

我認爲這是你所需要的:

您應該檢查VIM 手冊頁

-c {command} 
    {command} will be executed after the first file has been 
    read. {command} is interpreted as an Ex command. If the 
    {command} contains spaces it must be enclosed in double 
    quotes (this depends on the shell that is used). Example: 
    Vim "+set si" main.c 
    Note: You can use up to 10 "+" or "-c" commands. 

或:

--cmd {command} 
    Like using "-c", but the command is executed just before 
    processing any vimrc file. You can use up to 10 of these 
    commands, independently from "-c" commands. 

這真的取決於你想要做什麼。此外,由於在vundle自述文件中所述,如果您啓動vim的是這樣的:

vim +BundleInstall +qall 

這將安裝無需打開vim的所有束選項。 而只是澄清,從vim documentation

:qall 

    This stands for "quit all". If any of the windows contain changes, Vim will 
    not exit. The cursor will automatically be positioned in a window with 
    changes. You can then either use ":write" to save the changes, or ":quit!" to 
    throw them away. 

希望它能幫助!

2

我會爲正在尋找更一般解決方案的人添加另一個答案。

vim +command可以運行一個Vim命令,但是可以從一個shell運行幾個Vim命令。相反,在Ex模式下啓動Vim並使用Here文檔提供命令。這是我寫的腳本的一個例子。它在文件中搜索一個模式並在其之前插入一些文本。

ex --noplugin +1 "$v_file" <<-END 
      set maxmempattern=8000 
      /^\s*\<endmodule\>/i 

      FIXME \`ifdef XXX_INCLUDE_API 
       \`include "${api_file}" 
      \`endif 

      . 
      w 
      q 
    END 
2

如何更復雜一些?

vim "+set ff=unix" "+wq" node_modules/less-monitor/bin/less-monitor 

不知道這是否完全正確,但它適用於我。 感謝@ jvc26

+0

我不明白這是一個新的問題(應該再單獨詢問),或一個新的答案。 –

+0

這只是一個例子,如何使用多字命令的解決方案,比如'+ set ff = unix'和'+ wq'而不是'+ qall'。在我的情況下,我需要更新文件。我張貼這爲答案,只是因爲我不能發表評論(50+聲譽需要) – graceman9

+0

*癌症治癒*感謝... –