2013-08-02 43 views
1

我在我的.vimrc以下,使其節省vimrc文件需要更長的時間和更長的重裝

" source as soon as we write the vimrc file 
if has("autocmd") 
    autocmd bufwritepost .vimrc source $MYVIMRC 
endif 

但是後處理,我有一個更復雜的文件,似乎時間發佈保存後的vimrc文件越來越長,越來越長,我必須退出我的gvim會議並重新開始。

是否有一個「清晰的工作空間」或更好的方式來解決這個問題,這樣我可以整天呆在單個gvim會話的舒適中?

+1

您是否支付編輯「〜/ .vimrc」或做實際工作的費用?在工作日中,通常沒有理由多次獲取'〜/ .vimrc'或者甚至編輯它。 – romainl

+0

我在那裏感受到一種語氣......我不打算在生活中的每一個清醒時刻都處理這個文件,但過去的一天一直如此,社區善於響應。此外,我隨時嘗試新的東西,我把它扔在vimrc中,如果你知道更好的沙箱位置,請告知! –

+0

使用其他文件:1.':vs〜/ temp.vim'。 2.在那裏添加你的自定義映射和臨時的東西。 3.':so%'。在這一天結束的時候,把這些好東西放在'〜/ .vimrc'中,然後放棄臨時文件。 – romainl

回答

11

每次獲取autocmd時,都會將其添加到autocmd列表中。所以當你保存的時候你可能會找到你的vimrc幾千次,因爲每次你輸入你的autocmd到列表。 (你可以通過做:au bufwritepost多次添加autocmd)

要解決這個問題,只需要將autocmd包裝在augroup中,並在加載時清除組。

augroup NAME_OF_GROUP 
    autocmd! 
    autocmd bufwritepost .vimrc source $MYVIMRC 
augroup end 

autocmd!刪除組中的所有autocmds。

幫助頁面閱讀:h autocmd-define:h autocmd-groups

4

也許你遇到它

:h autocommand 

所列現象的幫助賽斯:

如果你的.vimrc被執行兩次,自動命令將出現兩次。 爲了避免這種情況,在.vimrc文件中把這個命令,定義 自動命令之前:

:autocmd! " Remove ALL autocommands for the current group. 

如果你不想刪除所有的自動命令,可以用變量 ,以確保Vim的自動命令一次:

:if !exists("autocommands_loaded") 
: let autocommands_loaded = 1 
: au ... 
:endif 

我習慣了我的自動命令的分組這樣

augroup BWCCreateDir 
    autocmd! 
    autocmd BufWritePre * :call s:MkNonExDir(expand('<afile>'), +expand('<abuf>')) 
augroup END 
相關問題