2010-01-26 61 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