我将以下代码添加到我的.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 :(得分:15)
问题是您的原始autocmd
行设置为与模式*.*
匹配,即包含某些字符的任何文件名,后跟一个点,后跟一些字符。
因此文件test.html
或anothertest.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
目录的视图文件中。为您编辑的每个文件创建一个单独的视图文件。