2011-07-25 150 views
68

我有一個插件(FindFile.vim),需要運行:FindFileCache .,每當我啓動vim收集文件緩存以便快速打開時。我必須在每次啓動vim時運行此操作。Vim - 如何在啓動vim時立即運行命令?

我該如何編寫一次運行一次的命令,每當vim啓動時?

回答

108

保留你的配置的最好的地方是你的.vimrc 文件。然而,它的太早來源,檢查:h startup

At startup, Vim checks environment variables and files and sets values 
accordingly. Vim proceeds in this order: 

1. Set the 'shell' and 'term' option    *SHELL* *COMSPEC* *TERM* 
2. Process the arguments 
3. Execute Ex commands, from environment variables and/or files *vimrc* *exrc* 
4. Load the plugin scripts.         *load-plugins* 
5. Set 'shellpipe' and 'shellredir' 
6. Set 'updatecount' to zero, if "-n" command argument used 
7. Set binary options 
8. Perform GUI initializations 
9. Read the viminfo file 
10. Read the quickfix file 
11. Open all windows 
12. Execute startup commands 

正如你所看到的,你的.vimrc 插件被加載之前。如果您將:FindFileCache .放入其中,則會發生錯誤,因爲該命令尚不存在。 (一旦插件在步驟4中加載,它就會存在。)

要解決這個問題,不是直接執行命令,而是創建一個 自動命令。自動命令在事件發生時執行一些命令。在這種情況下,在VimEnter事件看起來(從:h VimEnter)合適:

            *VimEnter* 
VimEnter     After doing all the startup stuff, including 
          loading .vimrc files, executing the "-c cmd" 
          arguments, creating all windows and loading 
          the buffers in them. 

然後,只需將這一行你的.vimrc

autocmd VimEnter * FindFileCache . 
+1

+1,這應該是公認的答案,它比爲一個命令創建單獨的文件要乾淨得多。 – stackunderflow

+0

我用它在Ubuntu的全屏模式下打開vim:https://github.com/emmett9001/dotfiles/blob/115831ec75f19b60b30ddd521cd6e806467db18a/vimrc#L342 –

+0

想補充我在E172上有這個突破,因爲我之後有一個空間。 – Caroline

13

創建一個名爲~/.vim/after/plugin/whatever_name_you_like.vim文件,並

FindFileCache . 

在腳本中:help 'runtimepath'

1

.vimrcFindFileCache描述讀取和執行在VIM目錄順序填充。

自動加載命令不同,不適用於您的方案。

+0

感謝指出了這一點,實際上它是'plugin'不'autoload'。 – Benoit

53

還有-c標誌vim。我這樣做,我tmuxp配置有VIM開始與垂直分割:

vim -c "vnew" 
+3

謝謝,這就是我一直在尋找的。有時,我只需要運行臨時啓動命令,就像你已經顯示的那樣,並且不需要將它存儲在我的vimrc文件中。 – verboze

+0

這不能打開一個文件:'vim -c':colo default'test。 txt' –