Chinaunix首页 | 论坛 | 博客
  • 博客访问: 713007
  • 博文数量: 112
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 1192
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-12 16:46
文章分类

全部博文(112)

文章存档

2009年(4)

2008年(108)

我的朋友

分类: LINUX

2008-12-03 22:37:08

 

您首先应当知道的是,在 UNIX 中最流行的两种编辑器是 Emacs 和 vi,两者都有超过 30 年的历史。不过,它们都是很难过时的工具。和 UNIX 一样,这些编辑器的基本设计已有几十年之久,但是在最先进的开发中,它们仍然得到了广泛的应用。

Emacs 是历史上最早的开放源代码和免费软件工程之一。它的发明者 Richard Stallman 建立了 GNU 工程及其父组织—自由软件基金会(请参阅参考资料)。甚至在 Stallman 发布 GNU 公共许可(GNU GPL,一种许可条款,如今的大多数开放源代码软件都是在该条款下发布的)之前,他就已经在类似的免费 copyleft 软件许可(被称为 EMACS 公共许可)下发布了 Emacs 的源代码。

Emacs 这个名字已经成为专有名词,但它最初是一个首字母缩写词,代表 Editing MACros;Stallman 最初实现的是用 TECO 语言写成的一组宏。Emacs 现在是用 Emacs Lisp 编写的,后者是一种优雅的高级编程语言。

GNU 工程的简要介绍中称 Emacs 是一种自身配备了相关说明文档的可扩展文本编辑器 (the extensible self-documenting text editor)。Emacs 是可扩展的,这意味着可以在已有功能的基础上添加或构建新功能。之所以有这种可能,是因为它是用 Lisp 编写的,您可以编写新的 Emacs Lisp 例程以添加新功能。您甚至能在 Emacs 会话还在运行时运行这些新功能。它自身配备了相关说明文档,因为每个按键都有相应的即时帮助,即使在键入一个命令时也能显示帮助信息。这样,您可以单击 Help 按钮,弹出各种可能情况的列表。

Emacs 被称为一个编辑环境, 因为它不仅仅是一个普通意义上的、用于纯文本编辑的编辑器。许多管理员和开发人员在各种平台上用它来编译和调试程序、管理电子邮件、在系统中操作文件、运 行 shell 命令,以及完成很多其他工作。人们甚至用它在 Usenet 新闻组中进行交流,还用它来浏览网页。扩展包和内置插件可以处理从 Internet 中继聊天 (Internet Relay Chat, IRC) 和发送消息到网络通信的各种情况。一个流传很久的 UNIX 笑话是这样说的:“如果 Emacs 环境里有一个好的编辑器的话,它就不至于这么糟糕了。”

因为很多任务都可以用 Emacs 来完成,所以它也有自己的词汇表,当您在这一部分中深入了解典型的 Emacs 窗口时,您将学到这些词汇。这一部分还介绍了如何启动和停止 Emacs,以及如何键入各种命令。

要从 shell 中启动 Emacs,键入:

emacs

如果您在控制台或终端中启动 Emacs,您会看到它打开后充满了整个终端窗口,如图 1 所示。



终端窗口中的 Emacs

如果您是在 X 客户端,Emacs 一般会在属于它自己的窗口中打开,如图 2 所示。您还可以指定让它在某个终端窗口打开(如图 1 所示),方法是使用 -nw 选项。乍一看,Emacs 的这两个视图似乎是不同的应用程序,但两者只有表面的差别。它们仅有的真正不同之处在于缺省的颜色、X 客户端显示的图形徽标,以及 X 客户端顶部附近的图标组(包含某些最常用命令的快捷方式)。两者的文本功能和 X 版本是一模一样的。



Emacs,X 客户端

这个屏幕的有些部分需要现在就解释一下。我们从顶部开始,向下介绍。

在 Emacs 屏幕顶部是一个突出显示的条,上面有一些单词。这被称为菜单栏,您可以在菜单中选择常用的 Emacs 命令。您能用键盘访问这些菜单;在 X 客户端中,您还可以用鼠标展开菜单。

专家们通常会配置他们的 Emacs,使它关闭菜单栏,好在屏幕上留出更大的编辑空间。但是在您学习 Emacs 时,菜单栏是帮您熟悉其丰富功能的好方法。

此外,如果您在 X 中打开了 Emacs,您会看到顶部有一组特殊的图标(请参见图 2);它们是某些最常用的菜单选项的快捷方式。

要用键盘访问菜单栏,请按 F10。现在就试试,看看终端中是如何打开一个新的窗口并显示菜单列表的,如图 3 所示。



从 Emacs 菜单栏中进行选择

您可以使用向上或向下的方向键,在菜单选项中移动,然后按 Enter。如果您选择的项目有一个子菜单,它会显示在屏幕上。您可以用同样的方法在新的子菜单中选择一个项目,直到您选中了要运行的命令为止。

如果您想终止这一过程,可以随时按下 Ctrl-G。这个特殊的键盘输入会使计算机发出一声蜂鸣声,并退出当前正在执行的任何命令。如果没有正在执行的命令,按下这个键盘输入只会使计算机发出蜂鸣声。请现在尝试一下。

您会看到 Emacs 窗口恢复成在您选择菜单之前的样子。

屏幕中央大片的主要区域被称为 Emacs 窗口,它是您进行编辑工作的地方。当您打开一个要编辑的文件时,这里将显示该文件的内容。当文件或文档中的内容显示在 Emacs 窗口中时,它被称为缓冲区。您可以随时在 Emacs 中同时打开多个缓冲区(即使它们不会显示在主窗口中也一样)。在编辑会话中,虽然只有一个缓冲区会显示在窗口中,但您一般仍会打开多个缓冲区。

在 X 客户端中,在窗口的左边会显示一个滚动条。(终端的版本也会出现,但它仅在打开某个缓冲区时显示。)滚动条显示 Emacs 窗口中的文本与缓冲区剩余部分的位置关系与大小关系。

在每个 Emacs 窗口中都有一条横贯底部的高亮条,它被称为模式行, 您可以把它看成是状态栏。它将为您提供有关 Emacs 会话和当前缓冲区(在上面的窗口中显示)的信息,包括您做出的最新修改是否已被保存到磁盘、光标所在行的行号、屏幕底部显示的内容在缓冲区中的位置(用占 总体的百分比表示),以及当前有哪些 Emacs 功能和设置处于活动状态。

在模式行下面和屏幕(或 X 客户端窗口)底部的一片小空间被称为迷您缓冲区 (minibuffer)。这是 Emacs 用来显示与操作相关的消息的地方。当 Emacs 要求您输入某种内容(如某文件的名称)时,将在此处显示。

与 UNIX shell 类似,迷您缓冲区使用制表符作为提示符。按下 Tab 键,可获得一个可能情况的列表。

一个用来调用特定命令的 Emacs 组合键被称为一个键绑定。这些都可以自定义,但 Emacs 也附有缺省的绑定。

一眼看去,为数众多的 Emacs 键绑定似乎很复杂,让人不知所措,不过请务必记住,它们是为了提高您的速度和便于记忆而专门设计的。通常每个绑定都有一个记忆的方法,如 S 键就是用来保存 (save) 的。在您尝试使用它们时,请想想这一点。

总的说来,Emacs 命令可分为两大类:一类要使用 Ctrl 键,而另一类使用 Meta 键。

许多 Emacs 命令是由某个 Ctrl 组合键指定的。.在 Emacs 的符号中,Ctrl 键写成“C-”,后面则是与第二个按键对应的字符。例如,在 Emacs 符号中,Ctrl-X 组合键写成 C-x

要输入一个 Ctrl 组合键,请按住 Ctrl 键,然后按第二个键,然后将两个键同时松开。大多数命令都有一个 Ctrl 组合键,在按下此组合键后要再输入一个单词或第二个 Ctrl 组合键。

例如,可以尝试运行 C-x C-s 命令,将当前的缓冲区保存到磁盘。因为您没有作出更改,所以也无需进行保存,但这个组合键值得一试。现在,请尝试进行以下操作:

  1. 按住 Ctrl 键。
  2. X 键,然后把两个键同时松开。
  3. 再按住 Ctrl 键。
  4. S 键,然后把两个键同时松开。

这个键盘输入将运行 save-buffer 命令。在迷您缓冲区中,Emacs 会报告“(No changes need to be saved)”。

Emacs 用户在按这些组合键时,在第二个步骤中往往不会松开 Ctrl 键,这样可以省去第三个步骤,加快键入速度。请尝试一下。

Emacs 键盘输入中的第二种主要类型是 Meta 键;在 Emacs 符号中,Meta 按键被表示为 M-。如果您从未听说过 Meta 键,那是因为目前的大多系统并没有这个键。输入 Meta 组合键,有三种方法:

  1. Meta 键常被绑定到 Alt 键,使用方法与 Ctrl 键类似。如果您的设置就是这样,请使用该设置,这是最简单、最常见的方法。
  2. 通常您可以使用 Esc 键完成一个 Meta 按键序列,但您的操作与输入一个 Ctrl 按键序列时不同。按下 Esc,然后松开,再按第二个键。
  3. 您可以用 Ctrl-[ 代替 Esc 键。如果您通过网络线路运行 Emacs,无法使用 Esc 和 Alt 键,这种方法会很方便。

请尝试输入 M-b 命令,这会把光标向回移动一个单词,有三种操作方法:

  1. 按住 Alt 键,然后按一下 B
  2. 按下 Esc,然后松开,再按一下 B
  3. 按住 Ctrl 键,再按 [,同时松开两个键,然后再按一下 B

您运行的每个 Emacs 命令都是一个函数,由 Emacs Lisp 定义,并有一个函数名。甚至连用向上方向键将光标向上移动一行也是一个函数(previous-line)。您可以使用 M-x 命令,然后再输入函数名,运行任意一个函数。

请尝试以下操作:

  1. 按住 Alt 键。
  2. X 键。
  3. 同时松开两个键,您会注意到迷您缓冲区中会出现“M-x”字样。
  4. 键入 previous-line 并按 Enter

当您这样操作时,光标会向上移动一行。当然,您平常是不会这样运行这个函数的,因为使用向上方向键比这容易多了,不过这是个好例子。函数为数众多,而且由于 Emacs 是可扩展的,您可以编写自己的函数以扩展其功能。

与通过向上方向键运行 previous-line 类似的是,许多函数都分配了快捷键。当您输入这样的一个键或组合键时,将运行相应的函数。您还可以使用 C-p 运行 previous-line 函数。现在,请尝试下面的操作:

  1. 按住 Ctrl
  2. P 键。
  3. 再按方向键,将光标移到窗口的顶部。

作为总结,表 1 列出了您可以在 Emacs 键绑定中使用的主要按键前缀类型。和 Emacs 中的其他东西一样,这些都是可以自定义和重新定义的。



按键前缀描述
C-c 当前编辑模式特有的命令
C-x 文件和缓冲区命令
C-h 帮助命令
M-x 函数名称

要退出 Emacs,请键入:

C-x C-c

如果有未保存的缓冲区,这个命令会使您有机会保存它们。

这是退出 Emacs 的一般方法。请现在就试着操作一下,然后在 shell 的提示符下键入 emacs,重新启动 Emacs。

阅读(1903) | 评论(0) | 转发(0) |
0

上一篇:Emacs 基础知识

下一篇:缓冲区和文件

给主人留下些什么吧!~~