文本编辑的本质

The world as we have created it is a process of our thinking.

Albert Einstein

文本编辑的遐思

毫无疑问,文本编辑这件事诞生于文字出现的年代,从结绳记事即开始了,打一个结,或解开一个绳结,算最初最抽象的“文本编辑”。然后是古苏美尔人雕刻软泥板上的楔形文字,其次是最初意义的纸张,古埃及人将尼罗河畔的纸莎草制成平的薄片,书记官在纸上以古埃及象形文字记录法老王朝。再次还有竹简,记录了最初的文明。更近的是在活字印刷术的出现,纯文本编辑并不开始于纸笔。

本文要讲述的纯文本编辑是利用文本编辑器工具进行 Plain Text 编辑,一个 IT 世界特有的概念。在 IT 世界并不长远的历史中,人们前赴后继前前后后可能实现过上千种纯文本编辑工具,我们如何在一篇短文中评论这件事,如何来谈论纯文本编辑?

文本编辑的本质

我们将之归结为四个字: 描述、创造。

描述是指人将概念以文本的表现形式在计算中具象化,创造即在抽象概念的基础上进行无中生有的活动。结合本文开头的爱因斯坦的引语。一切始于念头,因此不存在文本的创造,因为想法先于文本。即使神来之笔的小说家,我们也可以认为文本源自神念。文本编辑器即这样一种思维和二进制之间的媒介软件。

文本编辑的本质就是描述,人通过文本编辑器描述思维。

计算机中的纯文本编辑

落到实处,一个纯文本编辑过程最少需要什么?

  • 输入硬件:有一种输入设备将思维输入电脑
  • 输出硬件:在一个设备上呈现出来,人的五觉中只可以通过视觉(显示器)、听觉(耳机),触觉来获得文本的反馈,嗅觉和味觉做不到确定性。
  • 新建:指定一个位置输入
  • 保存:将输入的内容在一个位置存下来
  • 打开:呈现输入的内容
  • 指定输入点:有一个光标表示输入点
  • 移动输入点:能在指定点开始输入
  • 删除:输错了可以丢弃
  • 撤销:输错了可以反悔,理论上撤销可以用删除替代,输错了删,删错了再输

以上即是一个纯文本编辑的最少的基础功能,接着还有必备的:

  • 选择:选择一部分内容作后续处理
  • 剪切:删除输入,将输入暂存
  • 复制:不删除输入,将输入暂存
  • 粘贴:将暂存再输入

接着还有常用的:

  • 常用输入:时间等
  • 呈现的个性化:比如调整换行的方式,调整显示的字体等

纯文本编辑的本质就是提供一种工具能完成以上动作。在计算机中,这种软件叫做文本编辑器。以上也是 Windows 自带纯文本编辑器 Notepad 和 Mac 自带编辑器的功能。

简化到一行

人们进行纵向或横向书写,更简化的来考虑,抛开跨行的情况,我们在一行所做的操作即:

  • 前移一个字
  • 后移一各字
  • 删除一个字
  • 上移一行
  • 下移一行

最初的文本编辑器 vi 即从这样基础的功能在字符界面实现的。

扩充到整体

文本编辑的整体不过是对一行中操作的重复,从一到二,从二到三,再到整体。计算机中,这个概念即递归。

仅仅是这些吗

如果仅仅是这些,那么现代文本编辑器软件还包括什么内容?

答案是结构:1 + 1 = 2

以 Notepad 为例,它并不懂得 1 + 1 的结果是 2,但 Calc 懂得。这是什么意思?这是指,计算机不但可以懂得单个的数字、 英文字符、汉字、符号,还可以懂得由这些字符组成的一串文本背后的意义——即文本的语义。

文本编辑中的语义

语义对计算机来说是一种高级概念,基于数学、统计学、人工智能技术的理论与现代计算机硬件性能的提升,我们使用数学和统计,近似的解决了语义的命题。但只是近似,真正的彻底解决要让计算机“理解”语义,需要计算机在思维上等于人。再举一个例子:

我在IT桃花岛写我的文章。

计算机要从语言结构上理解这个句子,至少需要知道: 主语是我 ,状语是IT桃花岛,谓语是写,宾语是我的文章。

我    在IT桃花岛  读    我的文章。
主语  状语        谓语  宾语

这样,当我们告诉计算机——主语改成你,宾语改成他时,计算机会自动识别出第一个我和第二个我的不同。

而目前,稍微高级的文本编辑软件能做的,只是用分词技术将句子分为:

我  在  IT  桃花  岛  读  我  的 文章。

或者查找所有的“我”替换成为“你”或者“他”,还做不到对根本语义的理解。

当我们的思维中,想把句子改为“你在 IT 桃花岛读他的文章”时,就不得不由人通过键盘的按键将光标定位到要修改的字(人理解语义),再修改。

你可能说,这没什么,不是很简单吗?

那么让我们作两个假设:

  1. 金庸先生需要将令狐冲的武器由剑换为刀,在写好的小说中,所有令狐冲用剑的地方,都修改为用刀,
  2. 古龙先生需要将李寻欢的武器小李飞刀换成飞剑。

请问这个文本编辑任务中,如何帮助两位老先生准确的修改小说,这个任务需要多少时间?

要回答这个问题,我们引出了高阶文本编辑。

更高阶的文本编辑

如果文本编辑器要辅助我们完成上述的任务,那么它在文本编辑时就要懂得更多,它需要在背后通读小说,并且解析百万字的小说中所有出现的主角使刀用剑的地方,有针对性的作修改了。

目前计算可以做到吗?答案是可以,又不可以。

可以是说,利用深度学习技术,能在一定程度上做到,前提是限制在金庸先生或古龙先生的小说内,让计算机读更多的先生们的其他小说,并且标注出需要修改的地方,这里计算机便积累了大量的刀剑出现的概率数据。

不可以是说,即便如此,计算机还无法完美做到。假设有这样一句:

李寻欢飞身越过阿飞的剑,回身发出了他的小李飞刀,飞刀穿过了荆无命的剑,插在了上官金红的咽喉中。

我相信,即使有深度学习技术,也难以解决上述概率的处理了。

做的最好的是谁

在广义的文本编辑领域, 最可能智能化地完成上述任务的公司是 JetBrains,Google 是其金主,然后可能是微软 VSCode 的团队。当然,这些都是假设了。

《文本编辑的本质》有3个想法

  1. Pingback: 选择文本编辑器 – IT桃花岛

  2. Pingback: 神的编辑器 Emacs 生存指南 – IT桃花岛

  3. Pingback: 编辑器之神 Vim 生存指南 – IT桃花岛

发表评论

电子邮件地址不会被公开。 必填项已用*标注