富文本更注重格式与排版方面,这曾经一直以来是行业难题。以前文字编辑用得最多的就是报纸和广告,你不可能一直用绘图工具去做文字编辑的工作,效率太低下了。于是就催生了很多排版工具,包括 TeX 也是为排版而生。
早期的文字编辑工具并没有所见即所得,像 Markdown 或 TeX 那样直接显示出带格式标识符的普通文本。而富文本区别于普通文本就在于它是用特定的文档数据结构来表达一段内容,文档模型本身描述像粗体斜体字号字距等文本格式,描述特定节点的内容该如何参与排版如双栏、文字环绕、段距等,只要大家都遵循同一种文档模型(富文本格式),前端展示出来的效果是一致的。你复制它,再粘贴,看起来就只是复制了一段普通文本,但实际上是复制了一段带有格式描述的文档结构。这就是富文本。
代码编辑的关注点不同,用户不需要你搞什么斜体粗体段距字距等高大上的格式,也不需要不同类型的结构(文字、图片)参与排版。语法解析、关键词高亮、代码补全等才是核心功能,这背后需要语言服务的参与(一般是解释器或编译器的前端实现),推断代码是哪种语言再把它扔给语言服务解析成语法树,再在上面做各种功能。
从树的角度,富文本也有文档模型树,代码也有语法树,但它们一个侧重格式与排版的渲染与展示,一个侧重文档分析和实时交互。代码本身可以作为一种特殊的格式嵌入到富文本段落里,但富文本的能力不太需要用在代码上,就这么个关系。