使用 Vim 编辑一个较长的 Markdown 文档时,如果想要手动维护 Table of Contents 是一件痛苦的事情,而且不同的 Markdown 解析引擎给标题生成的锚点链接并不一样,使用一款插件来替我们做这件事情会更方便。
插件 GitHub 链接:https://github.com/mzlogin/vim-markdown-toc
开发这个插件的时候感受倒是没有多深刻,近期维护我的一个开源文档项目 awesome-adb(文档长度近 2000 行,各级标题超过 80 个)时才实实在在地体会到这样一个功能对使用 Vim 编辑 Markdown 文档的用户还是挺实用的,节省了很多时间。
插件效果截图:
有此需求的童鞋可以 Star 收藏和试用起来,欢迎反馈和建议。
1
matrix67 2016-09-16 10:56:15 +08:00 via Android
toc 呀
|
6
everettjf 2016-09-16 12:52:25 +08:00
赞。
不过,我曾经很想适应 Vim 写中文文章,但后来实在是觉得输入法的切换太过麻烦,后来干脆只在写代码时用 vim (或 vim 的 ide 插件)。 楼主是怎么解决这个问题的? |
7
tracyone 2016-09-16 13:10:06 +08:00 via iPhone
不错,已经 star
|
9
mzlogin OP @everettjf 困扰应该主要是从 Insert Mode 回到 Normal Mode 和末行模式时如果还是中文输入法的话比较烦躁吧?
这个问题我也存在一定的困扰,目前会在 Windows 和 macOS 下使用 Vim ,主要使用 GUI ,使用 shift 切换中英文。 macOS 下目前有一些问题,反倒是 Windows 下会在 Esc 的时候自动切换到英文: ![vim-auto-ime]( ) 所以 Windows 下这样用还挺顺畅的, Esc 完就能放心地使用 Normal Mode 和末行模式了。 回头我探索一下 macOS 下能否有好的解决方案,有进展再回复你。 |
15
yuuko 2016-09-16 17:06:56 +08:00 via Android
@mzlogin mac 可以 github 搜索 smartim ,不过和 multi-cursor 插件有冲突,如果 neovim 可以试下我改的 smartIM.nvim
|
16
mzlogin OP @everettjf
@ashfinal 在 @yuuko 的提示下,找到个感觉还不错的解决方案,参考 https://www.v2ex.com/t/45772 使用插件 smartim 也可以,用那个帖子里 6 楼的配置也行,我现在在 MacVim 里使用 6 楼的配置,只是 ims 改成了 1 ,用起来挺顺手的。 感谢 @yuuko |
18
ashfinal 2016-09-17 16:14:44 +08:00
|
19
mzlogin OP @ashfinal 终端 Vim 下确实没生效,貌似是没有自动切换,不过我一般使用 GUI ,终端下开 Vim 一般就是改改配置文件啥的,所以希望保持始终在英文,这个问题倒是反倒遂了我的意。。。各取所需,怎么顺手怎么来😁😁😁
|
20
sfwn 2016-09-21 23:32:11 +08:00
你好楼主,生成的 TOC 好像不能正确跳转呀?
|
21
mzlogin OP @sfwn 请问是用于哪里的 Markdown 文档呢?目前支持 GFM 和 Redcarpet 两种解析引擎,如果您说的是属于这两种的,可以提供一个生成的锚点链接不对的标题吗?我看看能不能修复。
|
22
sfwn 2016-09-22 10:03:00 +08:00
@mzlogin
Base64: aHR0cHM6Ly9naXRodWIuY29tL3Nmd24vYm9vdC1rb3RsaW4vYmxvYi9tYXN0ZXIvUkVBRE1FLm1k 这个网址里面是正常的 Base64: aHR0cHM6Ly9naXRodWIuY29tL3Nmd24vcHJhY3RpY2UvYmxvYi9tYXN0ZXIvUkVBRE1FLm1k 第二个网址里 因为我的标题里有特殊字符 '`',导致就无法跳转了,还有我的每个标题后面都加了两个空格,忘了是什么风格了,楼主你看下是不是有影响,要不要考虑自动去掉末尾的空格 |
23
mzlogin OP @sfwn
第二个网址里是因为标题末尾的空格的原因,'`' 符号插件里是处理过的。有的 Markdown 解析引擎会要求换行使用空行或者在行尾加两个空格,但标题一般是没有要求的,不过行尾的空格我的插件里兼容处理一下会更好,我稍后更新一下。 感谢反馈哈! |
24
mzlogin OP |