代码折叠未保存在我的vimrc中

时间:2010-01-26 20:28:02

标签: vim config fold

我将以下代码添加到我的.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两次以查看我最近的文件列表为什么?)

6 个答案:

答案 0 :(得分:15)

问题是您的原始autocmd行设置为与模式*.*匹配,即包含某些字符的任何文件名,后跟一个点,后跟一些字符。

因此文件test.htmlanothertest.css将匹配,您的命令将会运行,但.vimrc在点之前没有任何内容,将无法匹配。

解决方案是设置匹配.vimrc的autocmd。您对?*的猜测与此匹配(因为它正在查找任何字符,后跟任意数量的其他字符),但您说它会以某种方式影响MRU。我不知道你为你的MRU使用了什么插件,但我猜它是在一个名称与?*模式相匹配的临时窗口中打开MRU列表的那个,并且后续加载视图是某种方式弄乱你的MRU。

因此,修复是使用更具体的东西来匹配.vimrc:

autocmd BufWinLeave .vimrc mkview
autocmd BufWinEnter .vimrc silent loadview 

这可能也会起作用,而且更为通用:

autocmd BufWinLeave .* mkview
autocmd BufWinEnter .* silent loadview 

答案 1 :(得分:8)

Per Jays评论这是最优雅的解决方案,我有很多插件并在多个操作系统上运行它并且刚刚测试过它。

autocmd BufWrite * mkview
autocmd BufRead * silent loadview

它不会破坏MRU并使您必须双重查询MRU 当你:new进入一个空缓冲区时,它不会出错 它也不要求您为可能使用的每种文件类型创建FileType patern。

注意:在“BufNewFile”上使用“loadview”可能会混淆MRU,而无意义的尝试在空缓冲区上渲染折叠我会想到吗?

答案 2 :(得分:2)

我有类似的问题。也许你必须创建保存数据的目录。

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

答案 3 :(得分:1)

将其添加到vimrc的顶部以确保viewdir存在

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

然后在你的autocmds部分:

autocmd BufWrite * mkview
autocmd BufNewFile,BufRead * silent loadview

答案 4 :(得分:1)

在Arch Linux中使用Neovim,我收到错误消息,直到我添加了!沉默之后(沉默!)这是我的〜/ .vimrc条目,

autocmd BufWrite * mkview
autocmd BufRead * silent! loadview

详细信息:

https://github.com/neovim/neovim/issues/7442#issuecomment-339752054

答案 5 :(得分:0)

视图详细信息保存在vimfiles\view目录的视图文件中。为您编辑的每个文件创建一个单独的视图文件。