专栏首页闷骚的程序员简化 kramdown 列表嵌套内容缩进的 Vim 插件

简化 kramdown 列表嵌套内容缩进的 Vim 插件

kramdown 的列表嵌套内容的缩进规则很「奇葩」,不是使用自然的 Tab 缩进。

问题

kramdown 的作者对列表嵌套内容的缩进规则的 描述 是:

kramdown does not allow 4 space indent, …… Indentation for list items is always calculated based on the first non-space character after the list item marker.

在年初 GitHub 宣布 GitHub Pages 服务将只支持 kramdown 这个 Markdown 解析引擎时,我曾经总结过从 Redcarpet 迁移到 kramdown 需要做的一些更改,将 GitHub Pages 从 Redcarpet 切换到 kramdown 里有说到,嵌套在列表项里的代码块,如果不按如上规则做缩进的话,将会解析不正常。

比如:

1. list item one

    ```python
    print 'hello, world'
    ```

2. list item two

解析后的结果是:

  1. list item one print 'hello, world'
  2. list item two

这当然不是我们想要的,我们应该如何写呢?

1. list item one

   ```python
   print 'hello, world'
  1. list item two ```

解析后的结果是:

  1. list item one print 'hello, world'
  2. list item two

看出来区别了吗?没错,这种情况下代码块必须缩进三个空格,因为除开列表记号后的第一个非空字符的缩进是三。

那么问题来了,有时候是有序列表,序号是个位数时需要缩进三个空格,序号是两位数时需要缩进四个空格,序号是三位数时(弄这么大的列表是闹哪样?)需要缩进五个空格……有时候是无序列表,只需要缩进两个空格。

当然这是最简单的一级嵌套的情况,如果是多级列表嵌套,那情况就更复杂了,每一次都去手打空格缩进吗?作为一名 Vimer,当然 say no!

所以为此我做了一个简单的小 Vim 插件专门用于解决此问题。

下载地址

使用方法

安装完此插件后,在你需要对列表嵌套内容进行缩进时,不用掰着手指头去数要打多少个空格了,只用按 LeaderTab 就好了。

安装方法

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

  1. 在你的 vimrc 文件中添加如下内容: Plugin 'mzlogin/vim-kramdown-tab'
  2. :so $MYVIMRC
  3. :PluginInstall

屏幕截图

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 将 GitHub Pages 从 Redcarpet 切换到 kramdown

    GitHub 前不久发布了 New Features 公告,GitHub Pages now faster and simpler with Jekyll 3....

    mzlogin
  • 设计模式学习之装饰者模式

    如下内容是学习《Head First 设计模式》第三部分《装饰者模式》所得,主要就是一些原文摘抄和少量自己的总结。

    mzlogin
  • Moziila 文件结构概览(译)

    这个文档是一份为开发人员提供的 Mozilla 源码目录结构树的指南。它提供源码的鸟瞰以方便开发人员理解 Mozilla 里有什么,到哪里去找想要的东西。它对一...

    mzlogin
  • 4行Python代码实时获取股市数据

    最近股市特别火,正在学/学会Python的读者想尝试一下股市交易或者练练项目,获取数据便必不可少。这不,行哥给大家介绍一个专门获取股市数据的方法,有了数据之后数...

    行哥玩Python
  • 如何判断一个网页是列表页还是详情页

    解析页面是做爬虫的过程中的重要环节,而且如果站点多了,解析也会变得非常复杂,所以智能化解析就可能是一个不错的解决方案。如果我们能够容忍一定的错误率,那么我们可以...

    崔庆才
  • python 购物车程序

    py3study
  • Python学习手册之数据类型

     在上一篇文章中,我们介绍了 Python 的异常和文件,现在我们介绍 Python 中的数据类型。

    py3study
  • Linux内核同步机制之(一):原子操作

    如果这个操作序列是串行化的操作(在一个thread中串行执行),那么一切OK,然而,世界总是不能如你所愿。在多CPU体系结构中,运行在两个CPU上的两个...

    Linux阅码场
  • Redis | 源码阅读 —— 链表

    本文是参考 黄建宏 先生所写的 《Redis 设计与实现》 一书而来的,在此感谢 黄建宏 先生能写出这么优秀的书籍。本次来整理关于链表相关的数据结构。

    码农UP2U
  • 图解CPU生产全过程——以intel CORE i7为例,展望CPU架构

    科学Sciences导读:图解CPU生产全过程——以intel CORE i7为例,展望CPU架构。本文简介英特尔Intel x86架构、生产制造CPU的原料和...

    秦陇纪

扫码关注云+社区

领取腾讯云代金券