在Terminal上快速预览Markdown

本文的起因

其实,对于Markdown预览这个需求,本来就是伪命题。

试想一下,发明Markdown的目的本来就是一种新的所见即所得的语言。

不过,在书写时候如果能够及时预览,也给我们避免了一些格式方面的错误,能让我们写得更顺手。

在诸如Atom之类的GUI编辑器中,我们可以很方便一遍书写markdown一遍即时预览。那么我们用vim书写Markdown的时候该如何即时预览呢?

几个工具

可以Parse markdown的格式,然后在terminal上输出的工具。Bug还比较多,觉得不顺手的话自己修改两下吧哈哈。

1
2
parsed = TTY::Markdown.parse('example.md')
puts parsed

可以监听文件是否有变化。然后可以处罚一个命令。用法如下。

1
$ filewatcher '**/*.js' 'jshint $FILENAME'
  • tmux

用来分割窗口。

在Termial上即时预览markdown

思路很简单,我们书写markdown的时候,用tmux分割窗口,在另一个窗口中,实用filewatcher 监听文件变化,
然后触发我们用tty-markdown书写的脚本即可,这个脚本的作用就是读取正在编辑的markdown文件,然后渲染输出到terminal上。

1
2
3
4
require 'tty-markdown'
parsed = TTY::Markdown.parse_file(ARGV[0])
puts "\e[H\e[2J"
puts parsed

保存这个脚本到PATH中,然后我们打开我们需要编辑的markdown文件。开始编辑,同时,在tmux的另一个窗口中,输入例如

1
filewatcher README.md 'tty-markdown  README.md'

哈哈,来一张截屏看看效果。

Todo

其实可以做成vim的插件,在vim中直接splitwindow来看渲染的内容。不过至今还没有大神来做这个事情,到底是为什么呢? 原因大概就是我在开头说的那几句话吧。本来就是所见即所得的东西,何必太过挑剔。