Vim与Markdown共舞
Vim作为编辑器之神,用于Markdown的编辑和阅读,会擦出什么样的火花呢?
因为受不了某知笔记的编辑体验,前段时间探索了在Vim中编辑和管理Markdown笔记的可能解决方案。最后,我找到了一个自认为不错的方案,相比很多Markdown编辑器来说甚至有更好的体验。
语法高亮
作为纯文本格式,如何在Markdown文档中快速找到所需要的内容,是影响Markdown编辑体验的一个关键因素。作为最佳的状态,如果编辑时能提供和阅读时一样的排版或样式,那么Markdown的编写就可以既高效又简洁美观了。因此,一个好的Markdown编辑器应该能尽可能地减小Markdown作为标记语言与生俱来的 编辑与阅读之间的割裂感。
语法高亮是一个比较好的解决方案。试想,如果加粗、斜体等都使用粗体和斜体来高亮,代码块、链接等都使用和渲染时差不多的样式来高亮,那么其实编辑和阅读也就差不多都是那么回事了。
Vim本来也支持Markdown的语法高亮,但是做得还不够。我使用 gabrielelana/vim-markdown 插件来增强高亮。另外, 为了满足其他一些需要,我Fork了该插件进行了一些改进 tamlok/vim-markdown。
另外,使用的配色方案是tamlok/detorte.该配色方案支持亮色和暗色两个主题,相对比较柔和。对上面提到的vim-markdown
插件专门适配过。
先来一个效果图:
可以看到:
normal mode
和insert mode
都是粗体,组合命令
则是斜体;标题根据不同的层级,也有区分,且以粗体显示,分明醒目;
行内代码,如
N<command>
使用类似预览的样式来显示(灰底);有序列表的序号、表格、链接等也有非常好的区分度;
利用Vim的 Conceal 特性,适当地隐藏了一些非内容的标记,如粗体的
**
、斜体的*
、行内代码的标记和链接的URL部分等。这样,可以避免大量标记喧宾夺主,令人分心。
通过语法高亮,基本就很容易抓住文章的内容和结构了。
另外,对于代码块,再推荐一个插件joker1007/vim-markdown-quote-syntax,支持代码块内的代码语法高亮,非常炫酷。
渲染预览
因为经常需要在Windows和Linux上工作,因此需要一个同时支持这两个平台的渲染插件。
iamcco/markdown-preview.vim 是一个同时支持Windows, Linux和MacOS的Markdown预览插件。通过以下配置,基本就可以做到一个按键预览当前笔记了。
let g:mkdp_path_to_chrome="chrome" let g:mkdp_auto_close=0 nmap <F7> <Plug>MarkdownPreview nmap <F8> <Plug>StopMarkdownPreview
大纲
大纲有助于编写的时候时刻抓住文章的结构,对文章有一个整体的控制。
提到大纲,肯定不能不提鼎鼎大名的majutsushi/tagbar。但是,该插件默认是不支持Markdown的。
其实,主要产生ctags格式的输出,tagbar
就能渲染。网上已经有很多教程,例如只要添加markdown2ctags.py就可以实现在tagbar
中显示Markdown的大纲目录了。
效果如下:
笔记管理
笔记管理直接使用插件scrooloose/nerdtree即可。该插件还支持收藏夹,可以对应到笔记本的概念。
查找
Vim有着强大的查找、搜索功能,所以对于纯文本的Markdown来说,完全可以拿过来用。这里就不多啰嗦了,比如:vimgrep
, ggreer/the_silver_searcher等。
结语
折腾下来,Vim下编辑Markdown笔记完全是没有任何问题的,特别是语法高亮和Conceal特性,可以尽可能地减小Markdown与生俱来的割裂感。
不过,实在遗憾的是GVim也不支持显示图片,否则,如果能在编辑的时候就预览图片链接,将会是多么美好呀?另外,对于图片,也是需要手动管理,这也是一个缺憾。
工作中,我使用这套解决方案来记录Markdown笔记大概差不多两个月。后来,实在忍不住,基于Vim的这些优点折腾了一个Markdown笔记软件 VNote,在工作中完全取代某知笔记了,哈哈!
VNote
强烈推荐一个! Github项目主页,之前写的一篇介绍文章SegmentFault VNote。