我将以下代码添加到我的.vimrc中:
" save and restore folds when a file is closed and re-opened
autocmd BufWinLeave *.* mkview
autocmd BufWinEnter *.* silent loadview
Run Code Online (Sandbox Code Playgroud)
HTML和CSS文档保存并恢复它们的折叠,但代码折叠没有保存在我的.vimrc中
有什么建议?
编辑:
以下代码解决了这个问题:
au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview
Run Code Online (Sandbox Code Playgroud)
但如果我写它,MRU文件会从我的列表中消失(我必须打开MRU两次以查看我最近的文件列表为什么?)
Ric*_*ich 15
问题是你的原始autocmd行被设置为匹配模式*.*,即任何包含一些字符的文件名,后跟一个点,后跟一些更多的字符.
所以文件test.html或anothertest.css将匹配,并且您的命令将运行,但是.vimrc,在点之前没有任何内容,将不会匹配.
解决的办法是设置一个自动命令这将匹配.vimrc.你的猜测?*与此匹配(因为它正在寻找任何字符,后跟任意数量的其他字符),但你说它会以某种方式影响MRU.我不知道你为你的MRU使用了什么插件,但我猜它是在一个名称与?*模式相匹配的临时窗口中打开MRU列表的那个,并且后续加载视图是某种方式弄乱你的MRU.
因此,修复是使用更具体的东西来匹配.vimrc:
autocmd BufWinLeave .vimrc mkview
autocmd BufWinEnter .vimrc silent loadview
Run Code Online (Sandbox Code Playgroud)
这也可能会起作用,而且更为通用:
autocmd BufWinLeave .* mkview
autocmd BufWinEnter .* silent loadview
Run Code Online (Sandbox Code Playgroud)
小智 8
Per Jays评论这是最优雅的解决方案,我有很多插件并在多个操作系统上运行它并且刚刚测试过它.
autocmd BufWrite * mkview
autocmd BufRead * silent loadview
Run Code Online (Sandbox Code Playgroud)
它不会破坏MRU并使您必须双重查询MRU当您执行以下操作时不会出现错误:new into a empty buffer它也不需要您为可能使用的每种文件类型创建FileType patern.
注意:在"BufNewFile"上使用"loadview"会混淆MRU,而无意义尝试在空缓冲区上渲染折叠我会想到??