9

是莽撞人就来单挑:一个所见即所得的(R)Markdown 编辑器?

 3 years ago
source link: https://yihui.org/cn/2018/06/wysiwyg-r-markdown/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

是莽撞人就来单挑:一个所见即所得的(R)Markdown 编辑器?

谢益辉 / 2018-06-20


2020-12-14 更新:好了,不用折腾了。RStudio 可视化编辑器已经横空出世。请忽略下文。


纯就编辑体验来说,R Markdown 写写中小型文档还可以,但到了写大规模的文档就有点令人头疼了,比如写书。这种情况下需要尽可能减少分心因素,不然很难连续取得进展,而坦白说,阅读大型 Markdown 源文档并不是一件让人愉悦的事情,让我写书的时候有些眼乏。其实我的不满之处并不多:

  1. 我不喜欢看见表示斜体的下划线和表示粗体的双星号,我想直接看见斜体和粗体。

  2. 我不喜欢看到超级链接,尤其是链接很长的情况下,很是干扰阅读;若链接能直接附着在文字上会好很多(可以像 Google Doc 那样点击编辑更新链接)。

  3. 章节标题在源代码编辑器里没什么醒目标记,上下翻阅文档时,基本不知道自己看到哪一小节了。

除这些之外,引用和列表如果能以可视化形式表现出来更好,但看它们的源代码也不是太让人不舒服,而且我写书的时候并不常用引用段落。

所见即所得的编辑器容易被高级码农吐槽和鄙视,我自己也经常吐槽 Word,认为纯文本文件优于用手直接戳戳戳的二进制文件。那我怎么现在又开始期盼所见即所得的编辑器了呢?其实并没有,我并不想要一个完全的所见即所得编辑器,我只希望上面三个元素的源代码能暂时藏到屏幕背后去,我们编辑的仍然是一个 Markdown 文档,只是略微换一种让作者更舒服的展现形式而已。

本厂 RStudio 近期还没有把编辑器变成所见即所得的计划,所以我把想法写出来,看看是否有莽撞人能来揭榜。这事有两条可能的路:

  1. 如果你精通 JS/HTML,你可以从头写一个编辑器,实现上面三项需求。

  2. 如果你想站在巨人肩膀上,我已经花了一些时间调查了一大圈,各种所见即所得的编辑器中,我觉得有戏的是 ProseMirrorToast UI Editor。目测前者轻一些,后者重一些(而且暂时不适合写代码段)。

当网页版的编辑器搞定之后,剩下的事情就是如何把编辑的内容和本地文件关联起来,也就是如何打开和保存文件。此时又有两条路:一是用 Shiny,框架现成(比如点保存按钮之后就 writeLines()),但重一些;二是自制一个能在 R 环境中通过网页读写本地文件的工具,这个其实也并不太难,看看我的 servr 包如何借力 httpuv 大概能明白(通过 Websockets 与 R 交流)。当然,等 Chrome 的文件读写原生支持出来以后就不用这么复杂了。

这个编辑器的一个明显缺点是,代码段中的代码无法像在 RStudio 编辑器中可以直接运行,但这个问题可能也不是太大的问题,取决于你的 R Markdown 文档有多少需要边写边跑的代码。对我而言,我的写作中并没有多少需要即时运行并看结果的代码。就算需要看代码运行的结果,也可以通过写轮眼的无限月读(xaringan::inf_mr())来实时编译预览,或不可挡的 bookdown::serve_book()。即便如此,还是大大损失了 RStudio 的代码功能,如自动补全。比起上面我的三个痛苦,这个代价我可以接受。

好了,需求和可能的实现就说到这儿,再说下去我感觉我自己就快要开挂上场了。下面有请莽撞人登场,况且况且况况且。

短视频 Github 项目星标数

Disqus Utterances Preferences

© Yihui Xie 2005 - 2020

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK