V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Daring Fireball: Markdown
CommonMark
MacDown Open Source Markdown Editor
Marked
GitHub Flavored Markdown
mzlogin
V2EX  ›  Markdown

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

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

    如果你使用 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
        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   ·   我们的愿景   ·   实用小工具   ·   1019 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:26 · PVG 03:26 · LAX 12:26 · JFK 15:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.