Markdown 的文章目录在 Vim 里的终极解决方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mzlogin
V2EX    Markdown

Markdown 的文章目录在 Vim 里的终极解决方案

  •  1
     
  •   mzlogin 2016-10-24 20:03:13 +08:00 5544 次点击
    这是一个创建于 3349 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果你使用 Vim 编辑 Markdown ,而且也为如何生成和更新文章目录( Table of Contents )而烦恼,那么如下的内容将带你脱离刀耕火种手写 Toc 的体验,回归使用 Markdown 是为了专注于内容的初心。

    一言不合先上图:

    vim-markdown-toc

    没错下面就要给你们安利图中演示的这款 Vim 插件了。

    插件功能

    1. 为 Markdown 文件生成文章目录( Table of Contents )。

      目前支持的 Markdown 解析引擎:

      • GFM ( GitHub Flavored Markdown )
      • Redcarpet
    2. 更新已经存在的文章目录。

    3. 保存文件时自动更新文章目录。

    下载地址

    既然它如此的好,那么,哪里可以下载得到呢?

    GitHub :https://github.com/mzlogin/vim-markdown-toc

    安装方法

    推荐使用 Vundle 来管理 Vim 插件,这样你就可以简单三步完成安装了:

    1. 在你的 vimrc 文件里添加如下内容:

      Plugin 'mzlogin/vim-markdown-toc' 
    2. :so $MYVIMRC

    3. :PluginInstall

    So easy !当然如果是使用 vim-plug 来管理插件的话跟这步骤一样一样的。

    使用方法

    生成文章目录

    将光标移动到你想放置文章目录的地方,然后运行如下两个命令之一就行:

    1. :GenTocGFM

      生成 GFM 链接风格的文章目录。

      适用于 GitHub 仓库里的 Markdown 文件,比如 README.md ,还有用于生成 GitBook 电子书的 Markdown 文件。

    2. :GenTocRedcarpet

      生成 Redcarpet 链接风格的文章目录。

      适用于使用 Redcarpet 作为 Markdown 解析引擎的 Jekyll 程序或其它地方。

    更新已有目录

    使用 :UpdateToc 命令就好了。

    其实按默认的配置,保存文件的时候如果发现之前已经使用插件生成过文章目录,就会自动更新,什么都不用做。只有在关闭了自动更新的情况下,才需要使用命令来更新。

    配置选项

    推荐的用法是就按默认配置,效果杠杠的。但我知道 Vimer 都是不折腾会死星人,一切可控才舒心。

    1. g:vmt_auto_update_on_save

      默认值: 1

      用于控制保存文件时是否自动更新已有文章目录。

      如果你确确实实想关闭如此方便好用改变人生的功能,那么在 vimrc 文件里加入如下内容:

      let g:vmt_auto_update_on_save = 0 
    2. g:vmt_dont_insert_fence

      默认值: 0

      用于控制是否插入文章目录前后标志行。

      用插件生成文章目录的时候会在前后插入 <!-- vim-markdown-toc --> 这样的行,这是为了实现保存时自动更新文章目录功能而加入的,使用的是 HTML 的注释语法,在生成的页面里不会看到它们。当然如果你真的不想在源码里看到它们,也是可以让插件生成目录时不插入的,损失就是将无法实现保存文件时的文章目录自动更新这种精华功能,可要想好了。

      关闭方法,在 vimrc 文件里加入如下内容:

      let g:vmt_dont_insert_fence = 1 

    在线案例

    看看这个文章目录近百行, GitHub 上 Star 过千的文档项目:

    对没错它的目录就是用 vim-markdown-toc 维护的,近百行的文件目录如果手动维护准确性和便捷性都无法保证,会痛苦到怀疑人生的。

    我使用的与 Markdown 相关的插件

    最后附上我的完整 Vim 配置:https://github.com/mzlogin/config-files

    好了安利结束,希望这个出自我手,我眼中的终极解决方案能改变你的生活,帮你节省一些宝贵的时间。

    7 条回复    2017-11-10 11:03:53 +08:00
    knightdf
        1
    knightdf  
       2016-10-24 20:28:36 +08:00
    不错!
    MForever78
        2
    MForever78  
       2016-10-24 23:33:51 +08:00
    支持!

    另外 vim-table-mode 并不仅仅是表格排版,还可以作简单的公式运算,以及按某列对表格排序。厉害了。
    mzlogin
        3
    mzlogin  
    OP
       2016-10-24 23:38:23 +08:00
    @knightdf 感谢支持
    mzlogin
        span class="no">4
    mzlogin  
    OP
       2016-10-24 23:48:23 +08:00
    @MForever78 确实如此。

    公式运算我之前有留意到,按列排序还真不晓得……赶紧去看了一下 doc 然后试用了一番,还真是。

    这么实用的功能作者在 README 里居然提都没提~感谢提示~
    fiht
        5
    fiht  
       2016-10-25 10:43:26 +08:00 via iPhone
    先 Mark 一下
    haoxuexiaoyao
        6
    haoxuexiaoyao  
       2017-01-03 10:34:32 +08:00
    请问下你这个是什么主题啊 Windows 下看着挺不错啊
    mzlogin
        7
    mzlogin  
    OP
       2017-11-10 11:03:53 +08:00
    @haoxuexiaoyao 是 Vim 自带的 desert 哈
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1025 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 23:18 PVG 07:18 LAX 15:18 JFK 18:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86