`

关于文本编辑器的一点思考

阅读更多

1. 什么是编辑器


形而上者谓之道,形而下者谓之器,器者,工具也。我们可以从工具的操作目标,输入条件,输出结果来分析一个工具。例如刀是人类的基本工具,假设操作目标是一个苹果,你输入力量,它输出被刀劈开的苹果。 当然如果你不用工具,用手也可以劈开苹果,但是明显的没有使用工具那么流畅,工具就是帮助我们快速的解决问题的东西。

编辑这个词的概念非常广泛,但是其实说白了,编辑就是对信息内容的组织整理修改等。编辑器就是对信息内容的组织整理修改提供便利的工具。

因为计算机里面的内容有多种组织形式,因此有多种多样的编辑器,常见的编辑器有文本编辑器、音频编辑器、图像编辑器、视频编辑器等。这些编辑器有的针对文本内容,有的针对图像资源,但是本质上都是大同小异的。

2. 工具组合对文本编辑的影响

假设我现在要写一篇文章,我需要若干张白纸,我的工具是一支笔。根据上文所说,分析工具从工具的操作目标,输入条件,输出结果来分析,白纸是操作目标,输入条件是我的笔画,输出结果是写在纸上的笔迹。很显然我肯定会写错别字,但是我除了在错别字上涂改,没有其他更好的修改手段了,这是工具以及工具所操作对象的局限性所决定了的。除了发明新的工具,否则无法弥补这个局限性。后来,有人发明了改正液和胶带纸,但是修改结果还是非常不美观。

这是因为白纸既是内容的存储介质也是内容的显示介质因为存储介质和显示介质绑定在一起,因此已经写下字符的地方,你不可以让这个字符消失,即不可以删除。你不可以在一个位置写下A,再把这个A修改成B,即不可以修改。如果你要在已经写好的内容中间再插入新的内容,后面的内容不会自动让出空档给你插入,即不可以在中间插入。

综上所述,我对笔+纸这个工具组合是非常的不满意,于是我开始意淫一个完美的文本编辑工具,这个文本编辑工具可以快速定位,删除,修改,插入,查找,比较,替换,排序等等。

最终这个工具出现了,那就是计算机文本编辑器,计算机系统相对于笔和纸有了很多天生的优势。计算机的存储介质和显示介质是分开的,存储是硬盘,显示是屏幕。硬盘天生支持擦除修改,显示屏幕天生支持动态刷新,操作系统天生支持快速定位文件指针和动态扩展文件大小。

好吧,我们来理一理头绪,现在我们的工具是计算机文本编辑器,操作目标是文件系统里面的一个文件,输入条件是我的鼠标和键盘,输出结果是修改后的文件的显示结果。基于计算机文本编辑器的特性,我们可以随心所欲的编辑文本。

最后提一个问题,如果我有一个非常大的文本文件,例如1G,我想在它的第一个字节后面添加一个新字节,那么从第一个字节往后的内容是否都需要往后移动一个字节的位置以便给这个新字节腾出点地方来呢?也就是说我添加了一个字节,会造成后面接近1G的内容移动一个字节的位置吗?
(答案肯定是否定的啦,那具体是怎么实现的呢?)

另外因为计算机的特性,我们的文本编辑器无法自动保存编辑的历史记录,所以最终有人发明了版本控制系统,例如CVS,SVN,Git等。


3. 计算机文本编辑器是如何工作的

让我们来回忆一下,我们日常是如何使用计算机文本编辑器的,首先我们利用编辑器打开一个文件,所谓打开也即是读取硬盘上的文件并显示在屏幕上,然后编辑器接受我们的输入,再根据我们的输入来修改文件内容,并将修改后的内容更新显示到屏幕上,最终修改到我们满意为止保存文件关闭编辑器。

任何完整的计算机系统,都有标准输入输出设备,并由操作系统负责协调这些设备。操作系统实现并维护着一个文件系统,编辑器借助于操作系统提供的接口读取文件系统中的文件,同时借助于操作系统提供的接口在屏幕显示文件内容,编辑器所要做的主要工具就是判断用户的输入,执行对应的编辑操作。什么样的键盘鼠标输入对应于什么样的编辑操作取决于用户和编辑器之间的协议。

编辑器是一个程序,因为程序都是活在操作系统里面的,如果编辑器程序当前激活并等待输入,那当操作系统收到用户输入,就会将输入定向到当前激活的程序,当前激活程序可以根据其源程序指示来处理这个输入。根据输入的不同,编辑器程序可以处理各种需求。为了提高编辑效率,一般上文本内容都是从硬盘读取到内存缓冲区,在编辑完成后,编辑器调用操作系统的接口来将修改内容从缓冲区保存到硬盘上的文件系统。


4. 计算机文本编辑器的基本操作

编辑文本最重要的基本点是操作定位问题,也即定位光标的位置,这里要区分光标和鼠标指针的区别,光标一般都是一个小竖线,指示你将要执行的操作从何处定位。在鼠标没有发明前,光标就存在于计算机里任何需要编辑文本的地方,对于现代习惯使用鼠标的人来说,因为鼠标指针点到哪里,光标就定位到哪里,我们往往忽视了光标和鼠标指针的区别,实际上他们两个是完全不相关的2个东西。不需要鼠标指针,我们完全可以使用键盘的上下左右键来移动光标。

定位到要操作的地方,下面就可以执行操作,你可以输入,删除,修改,查找,比较,替换,排序,复制,剪切,粘帖等等。仔细分析上面的这么多操作,其实关键的操作只有光标定位,输入,删除这三个基本操作,只需要这三个基本操作就可以完成任意的文本编辑工作,其他的操作都是为了提高工作效率而存在的非必要操作。比如我要修改A为B,其实就是分成3步,即先定位光标到A后面,然后删除A,再输入B。比如说我要将Hello替换成Hi,只需要将光标定位到o再依次删除ello,再输入i即可。


5. 如何使用UltraEdit来完成基本的编辑操作

在Windows系统里面,我使用UltraEdit(UE)来完成日常的文本编辑工作。UE使用上下左右键或者鼠标来定位光标,鼠标确实是个好东西,指到哪里就可以定位到哪里。输入内容只需要按键盘上的字母或者符号数字输入即可,删除内容就按Backspace或者Delete,这样就可以完成基本操作。至于稍微复杂一点的操作例如查找和替换,UE都提供了菜单和窗口界面来帮助我们完成操作。只是点点鼠标而已,非常的傻瓜化。


6. 如何使用VI来完成基本的编辑操作

VI在1976年首发于BSD操作系统,现在已经成为Unix\Linux类系统的标准配置,这类系统常常需要运行字符模式来执行指令,对于不需要菜单的字符模式,鼠标除了移动光标以外没有太大的作用,如果仅仅是为了移动光标而将手指移出键盘区去找鼠标是非常浪费时间而效率低下的。所以一个不需要使用鼠标而能快速定位光标的文本编辑器就显得非常重要了。

VI使用键盘上的kjhl来上下左右移动光标,你可能会疑问,VI不用鼠标就算了,为什么还不使用键盘上的上下左右键来移动光标呢?答案是上下左右键在键盘上的位置离字母区太远了,我们不光懒得将手移出键盘区,我们甚至懒得将手指移出键盘上的字母区。当然啦,kjhl只是VI里面最基本的光标移动命令,有很多复杂的命令来完成复杂的光标移到任务。

说完了VI如何定位光标,下面说说VI如何完成输入,删除。VI分为插入模式(Insert Mode)和一般命令模式(Normal Mode),普通的输入和删除方式和其他的所有编辑器一样,在插入模式下完成重复劳动就行。很显然如果VI只支持插入模式下的重复劳动,那它就不可能成为“编辑器之神”,VI的命令模式异常强大,你可以使用命令快速的完成删除,修改,查找,比较,替换,排序,复制,剪切,粘帖等等等等等等任意复杂的定制性编辑工作。


9. 道

形而上者谓之道,形而下者谓之器,道者,真理也。如今的文本编辑器参差不齐层出不穷,本文只列举了UltraEdit和VI做了简单说明,工具毕竟只是工具,只要可以完成工作,可以提高工作效率都是可取的,不应该一味的追求工具使用的细节,而应该理解事物的本质,从而真正的驾驭工具而不是被工具驾驭,此为形而上。

分享到:
评论
2 楼 congdepeng 2011-08-26  
  哪里哪里
1 楼 hlzhao 2011-08-25  
作者功力深厚啊!

相关推荐

    How Emacs change my Life.pdf

    Emacs是一种文本编辑器,最初由Richard Stallman和Guy Steele于1970年代早期在MIT开发。它具有强大的可扩展性,用户可以通过编程其内置的Emacs Lisp语言来扩展功能。Emacs编辑器对于程序员特别受欢迎,因为它可以...

    野草日记本 v1.1

    HTML(超文本标记语言)是网页制作的基础,而在这个日记本中,用户可以直接通过内置的HTML编辑器来编写日记。这意味着用户不仅可以输入文字,还可以插入图片、链接、格式化文本,甚至可以利用HTML代码自定义排版,使...

    offer收割机必看-CV算法岗知识点及面试问答汇总(含计算机视觉、机器学习、图像处理和 C++基础四大块).zip

    很多公式和图片,资源下载本地然后下载安装Typora查看,Typora 是一款支持实时预览的 Markdown 文本编辑器。它有 OS X、Windows、Linux 三个平台的版本,完全免费,体验非常好,推荐你使用。 知识不是看几遍就会的,...

    Vim实用技巧

    Vim是一款历史悠久且功能强大的文本编辑器,它在程序员、网站开发人员及系统管理员中有着广泛的应用。Vim的设计哲学是“唯快不破”,即它能够在思维的瞬间完成文本的编辑工作,这一点在软件开发过程中极为重要。它能...

    Harley Hahn's Guide to Unix and Linux.

    《Harley Hahn的Unix与Linux指南》是一...最终,读者通过这本书所学到的不仅仅是命令行操作和文本编辑,而是学会了如何以一种更加深入和有效的方式来使用计算机,这一点将在用户的整个计算机使用生涯中产生深远的影响。

    Mac用户必备!100多款免费实用的苹果Mac软件大搜集.docx

    - **Tex-Edit Plus**: 文本编辑器,适用于LaTeX排版。 这些软件涵盖了日常使用的各种场景,从生产力提升到桌面美化,再到文件管理和同步,都是Mac用户在探索新系统时可能会需要的实用工具。通过这些软件,用户可以...

    2010年试题

    了解并熟练使用PDF阅读器和编辑器对于处理这类学习资料非常重要。 3. 来源标注的重要性:从描述中我们可以知道,这份学习资料是从豆丁网下载而来的,并提到了原始文档位于新浪博客。这一点告诉我们,知识产权和资料...

    推箱子游戏

    推箱子游戏是一款经典的逻辑益智游戏,源自日本的“ Sokoban ”,在全球范围内广受欢迎。...通过逐步深入,开发者可以不断完善游戏,增加更多功能,例如多人模式、自定义关卡编辑器等,进一步提升自己的编程能力。

    向量微积分 多元微积分-英文版

    本书使用了LaTeX进行排版,并利用GNU Emacs文本编辑器在Fedora Linux系统上完成。图形则使用了MetaPost、PGF和Gnuplot等工具制作。 #### 二、主要内容与结构 本书主要涵盖了二维和三维空间中的微积分内容,适合于...

    Learn Python The Hard Way

    此外,还提供了一些新手应该注意的事项,比如选择合适的编辑器等。 ##### 习题1: 第一个程序 从最简单的“Hello World”程序开始,引导读者熟悉Python的基本语法结构。通过这个练习,读者将学会如何编写并运行自己...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    4.1 以面向集合的思维方式来思考 95 4.1.1 从面向过程转变为基于集合的思维方式 96 4.1.2 面向过程vs.基于集合的思维方式:一个例子 100 4.2 集合运算 102 4.2.1 UNION和UNION ALL 103 4.2.2 MINUS 106 4.2.3...

    操作系统的实现

    在开始之前,作者建议读者先准备好必要的开发工具,如文本编辑器或IDE,并了解一些基本的概念,比如什么是引导扇区以及它的作用。 **1.2 十分钟完成的操作系统** 本部分介绍了如何快速构建一个最小的操作系统,...

    DOS 软盘+光盘+U盘+硬盘+NTFS 想拥有更强大的DOS功能??

    EDIT.COM DOS7.1的文本编辑工具。 EMM386.EXE DOS7.1的内存管理工具。 FDISK.EXE 分区工具Free Fdisk 1.2.1,支持100G以上的大硬盘。 FDISK-98.EXE Win98的DOS7.1自带分区工具,不支持60G以上的硬盘。 FDISK-ME.exe ...

Global site tag (gtag.js) - Google Analytics