2010-01-26 75 views
15

我下面的代碼添加到我的.vimrc:代碼摺疊不會被保存在我的vimrc

" save and restore folds when a file is closed and re-opened 
autocmd BufWinLeave *.* mkview 
autocmd BufWinEnter *.* silent loadview 

HTML和CSS文件保存和恢復他們的褶皺,但代碼摺疊沒有被保存在我的.vimrc

有什麼建議?

編輯:

下面的代碼解決了這個問題:

au BufWinLeave ?* mkview 
au BufWinEnter ?* silent loadview 

,但如果我寫它時,MRU文件從我的列表中消失(我有兩次打開MRU爲了看看我最近的文件爲什麼?)

+0

摺疊數據被保存在一個視圖文件夾,但不是vimrc文件的數據 – alexchenco 2010-01-26 20:39:45

回答

15

的問題是,原來的autocmd線被設置爲匹配圖案*.*,即其包含一些字符,後面跟着一個點的任何文件名,其次是一些更多的字符。

因此,文件test.htmlanothertest.css將匹配,並且您的命令將運行,但.vimrc,它之前沒有任何內容,將不匹配。

解決方案是建立一個autocmd,其中匹配.vimrc。你的?*猜測不符合這個(因爲它是尋找任何字符,後跟任意數目的其它字符),但你說這在某種程度上影響的MRU。我不知道你正在使用的插件爲您的MRU,但我猜這是一個與相匹配的名稱將打開一個臨時窗口MRU列表?*模式,並認爲隨後的裝載是莫名其妙搞亂你的MRUs。

因此,解決辦法是使用一些更具體的匹配的.vimrc:

autocmd BufWinLeave .vimrc mkview 
autocmd BufWinEnter .vimrc silent loadview 

這是可能的,這將工作,也和比較一般:

autocmd BufWinLeave .* mkview 
autocmd BufWinEnter .* silent loadview 
0

細節得到保存在vimfiles\view目錄視圖文件視圖列表。爲您編輯的每個文件創建單獨的視圖文件。

+0

按預期工作的自動命令,否則?我在'BufWrite'上設置了'mkview'而不是'BufWinLeave',並在'BufNewFile,BufRead'上的'loadview'而不是'BufWinEnter'。不確定是否有其他方法是「正確的」。 – Jay 2010-01-26 20:36:33

+2

...另外,假設您爲修改的每個文件都創建了一個視圖文件,則可能需要考慮縮小要保存視圖的擴展名。通常情況下,通過使用可識別的自動摺疊語法保存文件的視圖,您不會獲得太多收益。 – Jay 2010-01-26 20:40:43

2

我也有類似的問題。也許你必須創建保存數據的目錄。

mkdir -p ~/.vim/view 
chmod 0750 ~/.vim ~/.vim/view 
6

每Jays評論說,這是最優雅的解決方案,我有很多插件,並運行在多個操作系統上,並且剛剛進行了測試。新入空緩衝區 它也並不需要您創建文件類型百通爲每個文件類型:

autocmd BufWrite * mkview 
autocmd BufRead * silent loadview 

它不會破壞MRU,讓你有雙查詢MRU 當它不出錯你可能會使用。

注意:在使用「的loadView」的「BufNewFile」 apears是什麼混淆MRU,而毫無意義的嘗試上呈現空緩衝區我還以爲褶皺?

+3

這會在[less.vim](http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/)等沒有文件名的地方播放。此外,如果該文件被寫保護(如幫助頁面!)。 – pieman72 2014-07-22 08:17:03

+0

保存文件後,所有摺疊都將被刪除。 – 2017-06-29 15:52:45

1

添加到您的vimrc的頂部,以確保VIEWDIR存在,則該

let &viewdir=expand("$HOME") . "/.bk/.vim/viewdir" 
if !isdirectory(expand(&viewdir))|call mkdir(expand(&viewdir), "p", 451)|endif 

在自動命令部分:

autocmd BufWrite * mkview 
autocmd BufNewFile,BufRead * silent loadview