学无止境!!

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  0 随笔 :: 1 文章 :: 0 评论 :: 0 Trackbacks
Emacs是一种强大的文本编辑器,在程序员和其他以技术工作为主的计算机用户中广受欢迎。EMACS,即Editor MACroS(编辑器宏)的缩写,最初由Richard Stallman(理查德·马修·斯托曼)于1975年在MIT协同Guy Steele共同完成。这一创意的灵感来源于TECMAC和TMACS,它们是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Frankston等人编写的宏文本编辑器。 Emacs在1970年代诞生于MIT人工智能实验室(MIT AI Lab)。在此之前,人工智能实验室的ITS上运行的操作系统PDP-6和PDP-10的默认编辑器是一个叫TECO(Text Editor and Corrector)的行编辑器。与现代的文本编辑器不同,TECO将击键、编辑和文本显示按照不同的模式进行处理,稍晚出现的vi与它有些类似。在TECO上击键并不会直接将这些字符插入到文档里去,必须先输入一系列相应的TECO指令,而被编辑的文本在输入命令的时候是不会显示在屏幕上的。在如今还在使用的UNIX编辑器ed(ed)上,我们还能看到类似的工作方式。   1970年代初,Richard Stallman访问Stanford AI Lab时见到了那里的"E" editor。这种编辑器有着所见即所得的直观特点,深深打动了Stallman。后来Stallman回到MIT,那时候MIT AI lab的黑客Carl Mikkelsen 已经给TECO加上了称作“Control-R”的编辑显示模式,使得屏幕能跟随用户的每次击键刷新显示。Stallman重写了这一模式,使它运行得更有效率,后来又加入了宏,允许用户重新定义运行TECO程序的键位。   这一新版的TECO立刻在AI实验室流行开来,并且很快积累起了大量自定义的宏,这些宏的名字通常就以“MAC”或者“MACS”结尾,意为“宏”(macro)。两年后,Guy Steele承担起统一当时存在的各种键盘命令集的工作。Steele和Stallman经过一夜奋战,最终由Stallman完成了这一任务,包括一套扩展和注释新的宏包的工具。这个完成的系统被称作EMACS,代表“Editing MACroS”。根据Stallman的说法,他采用这个名字是“因为当时在ITS里还没有被当作缩写用过。”("because was not in use as an abbreviation on ITS at the time." )也有说法指出,当时波士顿在MIT附近有家名为“Emack & Bolio's”的商店出售的冰激凌很受欢迎,Dave Moon是那里的老主顾,他就将ITS上一个给文本排版的程序命名为BOLIO,然而Stallman并不喜欢甚或根本不知道那种冰激凌,此事后来成了黑客界的一桩公案。   Stallman意识到过多的定制、在开发过程中事实上的分支以及针对特殊用途的限制,威胁着Emacs的发展。后来他写道:   “ Emacs的发布基于社群共享,这意味着所有的发展都要反馈给我,由我进行整合和发布。("EMACS was distributed on a basis of communal sharing, which means all improvements must be given back to me to be incorporated and distributed.") ”   最初的Emacs同TECO一样只能运行在PDP-10系统。Emacs虽然是在TECO的基础上发展起来的,不过它已经足以被认为是一个新的文本编辑器了。很快,Emacs就成为ITS上的标准编辑程序,接着由Michael McMahon移植到Tenex和TOPS-20系统上。 Emacs的功能特点   Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全 emacs功能的操作系统中,在基于编辑器的功能基础上,Emacs自行开发了一个“bourne-shell-like”的shell: EShell。Emacs还可以:   收发电子邮件   通过FTP/TRAMP编辑远程档案   通过Telnet登录主机   上新闻组   登陆IRC和朋友交流   查看日历   撰写文章大纲   对多种编程语言的编辑   调试程序,结合GDB,EDebug等。支持C/C++,Perl,Python,Lisp等等   玩游戏   计算器   记日记   煮咖啡   管理日程,Task,ToDo,约会等   个人信息管理   目录管理   文件比较   阅读info和man文档   浏览网站   为各种程序(TeX等)提供统一的操作界面   …… 编辑本段此外Emacs还有如下特点:   display editor   实时编辑器   高级编辑器   Self-documenting   可定制性   可扩展性(集成Lisp语言)   支持X Window环境 编辑本段各平台上的Emac   Emacs是目前世界上最具可移植性的重要软件之一,能够在当前大多数操作系统上运行,包括类Unix系统(GNU/Linux、各种BSD、Solaris、AIX、IRIX、Mac OS X等等)、MS-DOS、Microsoft Windows以及OpenVMS等。   Emacs既可以在文本终端也可以在图形用户界面(GUI)环境下运行。在类Unix系统上,Emacs使用X Window产生GUI,或者直接使用“框架”(widget toolkit),例如Motif、LessTif或GTK+等等。Emacs也能够利用Mac OS X和Microsoft Windows的本地图形系统产生GUI。用GUI环境下的Emacs能提供菜单(Menubar)、工具栏(toolbar)、scrollbar以及context menu等交互方式。 编辑本段编辑模式   Emacs采取的编辑方式是对不同类型的文本进入相应的编辑模式,即“主模式”(major mode)。Emacs针对多种文档定义了不同的主模式,包括普通文本文件、各种编程语言的源文件、HTML文档、TEX与LaTeX文档,以及其他类型的文本文件等等。   每种主模式都有特殊的Emacs Lisp变量和函数,使用户在这种模式下能更方便的处理这一特定类型的文本。例如,各种编程的主模式会对源文件文本中的关键字、注释以不同的字体和颜色加以语法高亮。主模式还提供诸如跳转到函数的开头或者结尾这样特地定义的命令。   Emacs还能进一步定义“次模式”(minor mode)。每一个缓冲区(buffer)只能关联于一种主模式,却能同时关联多个次模式。比如,编写C语言的主模式可以同时定义多个次模式,每个次模式有着不同的缩进风格(indent style)。 编辑本段Emacs快捷键   掌握Emacs的快捷键可以说是Emacs爱好者的基本功,也是提高编辑速度和质量所必备的,但是初学者可能记不住那么多的快捷键必要时可以翻一下,最常用的快捷键数量也就数十个。Emacs的快捷键都是绑定于ctrl和alt(或称meta)上的,例如c-x就是ctrl+x,m-x就是alt+x。当然所有的按键都可以自定义。   当要退出编辑时C-x C-c 代表着,先按C-x 再按C-c才可以退出编辑环境. 编辑本段文件操作   C-x C-f 打开文件,出现提示时输入/username@host:filepath可编辑FTP文件   C-x C-v 打开一个文件,取代当前缓冲区   C-x C-s 保存文件   C-x C-w 存为新文件   C-x i 插入文件   C-x C-q 切换为只读或者读写模式   C-x C-c 退出Emacs 编辑本段编辑操作   C-f 前进一个字符   C-b 后退一个字符   M-f 前进一个单词   M-b 后退一个单词   C-a 移到行首   C-e 移到行尾   M-a 移到句首   M-e 移到句尾   C-p 后退一行   C-n 前进一行   M-x goto-line 跳到指定行   C-v 向下翻页   M-v 向上翻页   M-< 缓冲区头部   M-> 缓冲区尾部   C-M-f 向前匹配括号   C-M-b 向后匹配括号   C-l 当前行居中   M-n or C-u n 重复操作随后的命令n次   C-u 重复操作随后的命令4次   C-u C-u 重复操作随后的命令8次   C-x ESC ESC 执行历史命令记录,M-p选择上一条命令,M-n选择下一条命令   C-d 删除一个字符   M-d 删除一个单词   C-k 删除一行   M-k 删除一句   C-w 删除标记区域   C-y 粘贴删除的内容   注意:C-y可以粘贴连续C-k删除的内容;先按C-y,然后按M-y可以选择粘贴被删除的内容   C-@ 标记开始区域   C-x h 标记所有文字   C-x C-x 交换光标位置和区域标记区开头   M-w 复制标记区域   C-_ or C-x u 撤消操作 编辑本段执行SHELL命令   M-x shell 打开SHELL   M-! 执行SHELL命令 (shell-command)   M-1 M-! 执行SHELL命令,命令输出插入光标位置,不打开新输出窗口   M-| 针对某一特定区域执行命令(shell-command-on-region), 比如 C-x h M-|uuencode 编辑本段窗口操作   C-x 0 关闭本窗口   C-x 1 只留下一个窗口   C-x 2 垂直均分窗口   C-x 3 水平均分窗口   C-x o 切换到别的窗口   C-x s 保存所有窗口的缓冲   C-x b 选择当前窗口的缓冲区   C-x ^ 纵向扩大窗口   C-x } 横向扩大窗口 编辑本段缓冲区列表操作   C-x C-b 打开缓冲区列表   d or k 标记为删除   ~ 标记为未修改状态   % 标记为只读   s 保存缓冲   u 取消标记   x 执行标记的操作   f 在当前窗口打开该缓冲区   o 在其他窗口打开该缓冲区 编辑本段目录操作   C-x d 打开目录模式   s 按日期/文件名排序显示   v 阅读光标所在的文件   q 退出阅读的文件   d 标记为删除   x 执行标记   D 马上删除当前文件   C 拷贝当前文件   R 重命名当前文件   + 新建文件夹   Z 压缩文件   ! 对光标所在的文件执行SHELL命令   g 刷新显示   i 在当前缓冲区的末尾插入子目录的内容   [n]m 标记光标所在的文件,如果指定n,则从光标所在的文件起后n个文件被标记   [n]u 取消当前光标标记的文件,n的含义同上   t 反向标记文件   %-m 正则标记   q 退出目录模式   说明:在目录模式中,如果输入!,在命令行中包含*或者?,有特殊的含义。*匹配当前光标所在的文件和所有标记的文件,?分别在每一个标记的文件上执行该命令。 编辑本段程序编译   M-x compile 执行编译操作   M-x gdb GDB排错   M-x dbx DBX排错   M-x xdb XDB排错   M-x sdb SDB排错 编辑本段搜索模式   C-s key 向前搜索   C-s 查找下一个   ENTER 停止搜索   C-r key 反向搜索   C-s C-w 以光标所在位置的字为关键字搜索   C-s C-s 重复上次搜索   C-r C-r 重复上次反向搜索   C-s ENTER C-w 进入单词搜索模式   C-r ENTER C-w 进入反向单词搜索模式   M-x replace-string ENTER search-string ENTER 替换   M-% search-string ENTER replace-string ENTER 交互替换   C-r 在进入查找/替换模式后,该命令进入迭代编辑模式   C-M-x 退出迭代编辑模式,返回到查找/替换模式   C-M-s 向前正则搜索   C-M-r 向后正则搜索   C-M-% 正则交互替换 编辑本段SHELL模式   C-c C-c 相当于Bash下的C-c   C-c C-z 相当于Bash下的C-z   C-c C-d 相当于Bash下的C-d   M-p 执行前一条命令   M-n 执行下一条命令   C-c C-o 删除最后一条命令产生的输出   C-c C-r 屏幕滚动到最后一条命令输出的开头   C-c C-e 屏幕滚动到最后一套命令输出的结尾   C-c C-p 查看前一条命令的输出   C-c C-n 查看后一条命令的输出 编辑本段打印资料   M-x print-buffer 先使用pr,然后使用lpr   M-x lpr-buffer 直接使用lpr   M-x print-region   M-x lpr-region 编辑本段收发邮件   M-x mail 发送邮件, C-c C-s 发送,C-c C-c 发送并退出   M-x rmail 接受邮件 用 gnus 收发邮件,阅读新闻组   M-x gnus 可以通过强大的 gnus 来收发邮件,阅读新闻组。可以参考 [1]   或者阅读 gnus 自带的 manual 来获得详细信息。 编辑本段定制   Emacs用户可以根据自身的需要和偏好对编辑器进行定制。强大而自由的个人定制功能是Emacs受到广泛欢迎的重要原因之一。定制Emacs主要有三种方法。   第一种方法是使用Emacs的交互式定制功能。Emacs提供了图形化的交互界面,使用户能够对可定制的公共变量进行设置。这种方法使Emacs的初学者不需要接触Emacs Lisp代码即可完成定制。   第二种方法是将一系列按键记录为宏,调用这一宏可以重复进行已经记录的一系列复杂操作。宏可以保存并命名,以便按名调用,不过同一时刻只能存在一个匿名的宏。   第三种方法是通过使用Emasc Lisp完成Emacs的定制。这种方法最为复杂,但是也提供了更多的灵活性和更强大的功能。用户通常将个人定制的Emacs Lisp代码保存在一个名为.emacs的配置文件中,Emacs程序运行之初便读取这一文件,完成用户要求的配置。用户可以通过.emacs文件重设变量、重新定义按键的绑定(key bindings)、以及定义新的命令,以方便用户个人的使用。很多高级用户的.emacs文件的个性化配置长达数百行甚至更多,这些个人的定制使他们的Emacs不仅与默认配置的功能不同,每个人的Emacs之间也千差万别。这种差异能很好的满足不同个性的偏好和不同工作的需求。   如果一段Emacs Lisp代码确实有用,它通常会被打包并发布给其他用户。在因特网上能找到很多这样来自第三方的elisp库,例如能用于编辑维基百科条目的wikipedia-mode。Usenet上的新闻组gnu.emacs.sources专门发布新的elisp库。有些第三方代码最终还成为了Emacs“标准库”的一部分。 编辑本段国际化   Emacs支持对多种文字的文本编辑,包括UTF-8在内的诸多编码系统,加上对多种字符集、文稿、书写系统,以及不同文化的书写习惯都提供了支持,使得世界上大多数语言的使用者都能通过Emacs进行文本处理。Emacs还能通过调用诸如ispell这样的外部程序,实现多种语言的拼写检查。
posted on 2012-04-04 14:08 葱头 阅读(311) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: