如何设置GVim Voom插件重启Markdown文件时保持大纲折叠?
刚好我也用过Voom插件处理Markdown文档,这个需求其实可以通过两种方式实现,看你偏好哪种:
方法1:用Vim会话保存折叠状态(简单直接)
如果你只是想针对当前这篇文档固定折叠状态,会话功能最省心:
- 打开文档后,手动把
Head-2部分折叠好 - 输入
:mksession! ./md_session.vim(文件名和路径可以自己调整),回车保存当前的会话状态(包括折叠、窗口布局等) - 下次打开这篇文档时,输入
:source ./md_session.vim,就能直接恢复到你之前设置的折叠状态
方法2:自动命令(一劳永逸,适配所有含指定标题的Markdown文档)
如果想让所有包含Head-2二级标题的Markdown文档,打开时自动折叠这部分,就给你的Vim配置文件加一段自定义脚本:
- 打开你的Vim配置文件(Linux/macOS是
~/.vimrc,Windows是_vimrc) - 添加下面这段代码:
autocmd FileType markdown VoomMarkdown | call FoldSpecificHeading("Head-2") function! FoldSpecificHeading(headingText) let l:all_lines = getline(1, line('$')) for l:idx in range(len(l:all_lines)) let l:current_line = l:all_lines[l:idx] " 匹配精确的二级标题(自动转义标题里的特殊字符) if l:current_line =~ '^##\s*' . escape(a:headingText, '\') . '\s*$' " 找到目标标题行后执行折叠命令 execute (l:idx + 1) . 'foldclose' endif endfor endfunction
- 保存配置后重启GVim,下次打开包含
Head-2二级标题的Markdown文档,Voom加载完成后就会自动折叠该部分内容
原理是利用Vim的autocmd机制,在Markdown文件打开时先加载Voom大纲,再调用自定义函数定位目标标题并执行折叠操作。之后如果要切换其他需要自动折叠的标题,只需要修改函数参数里的标题文本即可。
内容的提问来源于stack exchange,提问作者HWW
相关产品推荐
相关产品推荐

