2012-01-30 55 views
0

我有一個頭文件爲CSS的HTML文件。通常我在2個選項卡中打開該文件,因此我可以輕鬆地在HTML和CSS之間切換,但我也想摺疊大部分代碼(特別是字體聲明)。不幸的是,每當我打開第二個選項卡時,單折被撤消。打開新標籤在Vim中撤銷代碼摺疊

我以後可以重新摺疊一切,但如果我打開另一個選項卡,它將全部恢復。

我在我的.vimrc代碼摺疊設置是這樣的:

set foldmethod=indent " fold based on indent       
set nofoldenable " don't fold by default        
set foldlevel=1 " only close/open one foldlevel at a time    
au BufWinLeave * silent! mkview " save view when closing buffer  
au BufWinEnter * silent! loadview " load view when opening buffer 

回答

0

嘗試在原來的緩衝區比移動到相同的緩衝區不同標籤做:mkview:loadview。這應該使摺疊相同,這表明BufWinLeave和BufWinEnter不是您想要的事件。 。 。 。也許這也是因爲可摺疊是特定於窗口的,在這種情況下,您還需要在新選項卡的窗口中啓用摺疊。 。 。

此外,如果您只是將當前選項卡中的窗口拆分(:split:vsplit),您甚至不需要打擾mkview/loadview的內容。這應該給你兩個相同的摺疊設置相同的緩衝區的意見。一旦分開,每個窗口中的摺疊將獨立工作。 (:set winwidth=999; :set winminwidth=1當使用垂直分割時會使當前窗口自動填充Vim的屏幕寬度......)

+0

拆分當前窗口是一個解決方案,但我通常使用打開的瀏覽器並佔用一半的屏幕。選項卡可讓我最大化每個視圖的屏幕空間。 手動使用mkview/loadview似乎工作,雖然我討厭每次打開選項卡時都必須輸入所有內容。是否有另一對事件替換了我的vimrc中的BufWinEnter/BufWinLeave? – 2012-01-30 22:58:59

+0

我不確定,但我想你可以按原樣離開BufWinEnter,並將'mkview'改爲與'WinLeave'事件一起工作。似乎問題也可能是'nofoldenable'是你的默認值,不知道loadview是否會自動改變,但你必須將'foldenable'設置爲摺疊。 – 2012-01-31 00:49:29