You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置GVim Voom插件重启Markdown文件时保持大纲折叠?

刚好我也用过Voom插件处理Markdown文档,这个需求其实可以通过两种方式实现,看你偏好哪种:

方法1:用Vim会话保存折叠状态(简单直接)

如果你只是想针对当前这篇文档固定折叠状态,会话功能最省心:

  • 打开文档后,手动把Head-2部分折叠好
  • 输入:mksession! ./md_session.vim(文件名和路径可以自己调整),回车保存当前的会话状态(包括折叠、窗口布局等)
  • 下次打开这篇文档时,输入:source ./md_session.vim,就能直接恢复到你之前设置的折叠状态

方法2:自动命令(一劳永逸,适配所有含指定标题的Markdown文档)

如果想让所有包含Head-2二级标题的Markdown文档,打开时自动折叠这部分,就给你的Vim配置文件加一段自定义脚本:

  1. 打开你的Vim配置文件(Linux/macOS是~/.vimrc,Windows是_vimrc)
  2. 添加下面这段代码:
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
  1. 保存配置后重启GVim,下次打开包含Head-2二级标题的Markdown文档,Voom加载完成后就会自动折叠该部分内容

原理是利用Vim的autocmd机制,在Markdown文件打开时先加载Voom大纲,再调用自定义函数定位目标标题并执行折叠操作。之后如果要切换其他需要自动折叠的标题,只需要修改函数参数里的标题文本即可。

内容的提问来源于stack exchange,提问作者HWW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:33:04