免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 731 | 回复: 0
打印 上一主题 下一主题

介绍 Emacs 的编辑环境 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-03 22:37 |只看该作者 |倒序浏览

您首先应当知道的是,在 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,以及如何键入各种命令。
               
启动 Emacs
               
要从 shell 中启动 Emacs,键入:
emacs
               
               
如果您在控制台或终端中启动 Emacs,您会看到它打开后充满了整个终端窗口,如
图 1
所示。
               
                    
图 1. 终端窗口中的 Emacs
                    

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

               
               
Emacs 窗口剖析
               
这个屏幕的有些部分需要现在就解释一下。我们从顶部开始,向下介绍。
               
菜单栏
               
在 Emacs 屏幕顶部是一个突出显示的条,上面有一些单词。这被称为菜单栏,您可以在菜单中选择常用的 Emacs 命令。您能用键盘访问这些菜单;在 X 客户端中,您还可以用鼠标展开菜单。
               
专家们通常会配置他们的 Emacs,使它关闭菜单栏,好在屏幕上留出更大的编辑空间。但是在您学习 Emacs 时,菜单栏是帮您熟悉其丰富功能的好方法。
               
此外,如果您在 X 中打开了 Emacs,您会看到顶部有一组特殊的图标(请参见
图 2
);它们是某些最常用的菜单选项的快捷方式。
               
要用键盘访问菜单栏,请按 F10。现在就试试,看看终端中是如何打开一个新的窗口并显示菜单列表的,如
图 3
所示。
               
                    
图 3. 从 Emacs 菜单栏中进行选择
                    

               
               
您可以使用向上或向下的方向键,在菜单选项中移动,然后按 Enter。如果您选择的项目有一个子菜单,它会显示在屏幕上。您可以用同样的方法在新的子菜单中选择一个项目,直到您选中了要运行的命令为止。
               
如果您想终止这一过程,可以随时按下 Ctrl-G。这个特殊的键盘输入会使计算机发出一声蜂鸣声,并退出当前正在执行的任何命令。如果没有正在执行的命令,按下这个键盘输入只会使计算机发出蜂鸣声。请现在尝试一下。
               
您会看到 Emacs 窗口恢复成在您选择菜单之前的样子。
               
窗口
               
屏幕中央大片的主要区域被称为 Emacs 窗口,它是您进行编辑工作的地方。当您打开一个要编辑的文件时,这里将显示该文件的内容。当文件或文档中的内容显示在 Emacs 窗口中时,它被称为缓冲区。您可以随时在 Emacs 中同时打开多个缓冲区(即使它们不会显示在主窗口中也一样)。在编辑会话中,虽然只有一个缓冲区会显示在窗口中,但您一般仍会打开多个缓冲区。
               
在 X 客户端中,在窗口的左边会显示一个滚动条。(终端的版本也会出现,但它仅在打开某个缓冲区时显示。)滚动条显示 Emacs 窗口中的文本与缓冲区剩余部分的位置关系与大小关系。
               
模式行
               
在每个 Emacs 窗口中都有一条横贯底部的高亮条,它被称为模式行
您可以把它看成是状态栏。它将为您提供有关 Emacs
会话和当前缓冲区(在上面的窗口中显示)的信息,包括您做出的最新修改是否已被保存到磁盘、光标所在行的行号、屏幕底部显示的内容在缓冲区中的位置(用占
总体的百分比表示),以及当前有哪些 Emacs 功能和设置处于活动状态。
               
迷您缓冲区 (minibuffer)
               
在模式行下面和屏幕(或 X 客户端窗口)底部的一片小空间被称为迷您缓冲区 (minibuffer)。这是 Emacs 用来显示与操作相关的消息的地方。当 Emacs 要求您输入某种内容(如某文件的名称)时,将在此处显示。
               
与 UNIX shell 类似,迷您缓冲区使用制表符作为提示符。按下 Tab 键,可获得一个可能情况的列表。
               
学习如何键入 Emacs 的键绑定
               
一个用来调用特定命令的 Emacs 组合键被称为一个键绑定。这些都可以自定义,但 Emacs 也附有缺省的绑定。
               
一眼看去,为数众多的 Emacs 键绑定似乎很复杂,让人不知所措,不过请务必记住,它们是为了提高您的速度和便于记忆而专门设计的。通常每个绑定都有一个记忆的方法,如 S 键就是用来保存 (save) 的。在您尝试使用它们时,请想想这一点。
               
总的说来,Emacs 命令可分为两大类:一类要使用 Ctrl 键,而另一类使用 Meta 键。
               
学习如何键入 Ctrl 组合键
               
许多 Emacs 命令是由某个 Ctrl 组合键指定的。.在 Emacs 的符号中,Ctrl 键写成“C-”,后面则是与第二个按键对应的字符。例如,在 Emacs 符号中,Ctrl-X 组合键写成 C-x。
               
要输入一个 Ctrl 组合键,请按住 Ctrl 键,然后按第二个键,然后将两个键同时松开。大多数命令都有一个 Ctrl 组合键,在按下此组合键后要再输入一个单词或第二个 Ctrl 组合键。
               
例如,可以尝试运行 C-x C-s 命令,将当前的缓冲区保存到磁盘。因为您没有作出更改,所以也无需进行保存,但这个组合键值得一试。现在,请尝试进行以下操作:
               
  • 按住 Ctrl 键。
  • X 键,然后把两个键同时松开。
  • 再按住 Ctrl 键。
  • S 键,然后把两个键同时松开。
                   
    这个键盘输入将运行 save-buffer 命令。在迷您缓冲区中,Emacs 会报告“(No changes need to be saved)”。
                   
    Emacs 用户在按这些组合键时,在第二个步骤中往往不会松开 Ctrl 键,这样可以省去第三个步骤,加快键入速度。请尝试一下。
                   
    学习如何键入 Meta 组合键
                   
    Emacs 键盘输入中的第二种主要类型是 Meta 键;在 Emacs 符号中,Meta 按键被表示为 M-。如果您从未听说过 Meta 键,那是因为目前的大多系统并没有这个键。输入 Meta 组合键,有三种方法:
                   
  • Meta 键常被绑定到 Alt 键,使用方法与 Ctrl 键类似。如果您的设置就是这样,请使用该设置,这是最简单、最常见的方法。
  • 通常您可以使用 Esc 键完成一个 Meta 按键序列,但您的操作与输入一个 Ctrl 按键序列时不同。按下 Esc,然后松开,再按第二个键。
  • 您可以用 Ctrl-[ 代替 Esc 键。如果您通过网络线路运行 Emacs,无法使用 Esc 和 Alt 键,这种方法会很方便。
                   
    请尝试输入 M-b 命令,这会把光标向回移动一个单词,有三种操作方法:
                   
  • 按住 Alt 键,然后按一下 B
  • 按下 Esc,然后松开,再按一下 B
  • 按住 Ctrl 键,再按 [,同时松开两个键,然后再按一下 B
                   
    您运行的每个 Emacs 命令都是一个函数,由 Emacs Lisp 定义,并有一个函数名。甚至连用向上方向键将光标向上移动一行也是一个函数(previous-line)。您可以使用 M-x 命令,然后再输入函数名,运行任意一个函数。
                   
    请尝试以下操作:
                   
  • 按住 Alt 键。
  • X 键。
  • 同时松开两个键,您会注意到迷您缓冲区中会出现“M-x”字样。
  • 键入 previous-line 并按 Enter
                   
    当您这样操作时,光标会向上移动一行。当然,您平常是不会这样运行这个函数的,因为使用向上方向键比这容易多了,不过这是个好例子。函数为数众多,而且由于 Emacs 是可扩展的,您可以编写自己的函数以扩展其功能。
                   
    与通过向上方向键运行 previous-line 类似的是,许多函数都分配了快捷键。当您输入这样的一个键或组合键时,将运行相应的函数。您还可以使用 C-p 运行 previous-line 函数。现在,请尝试下面的操作:
  • 按住 Ctrl
  • P 键。
  • 再按方向键,将光标移到窗口的顶部。
                   
                   
    作为总结,
    表 1
    列出了您可以在 Emacs 键绑定中使用的主要按键前缀类型。和 Emacs 中的其他东西一样,这些都是可以自定义和重新定义的。
                   
    表 1. 常用的缺省 Emacs 按键前缀
                    按键前缀描述
                                C-c
                            当前编辑模式特有的命令
                                C-x
                            文件和缓冲区命令
                                C-h
                            帮助命令
                                M-x
                            函数名称
                   
    停止 Emacs
                   
    要退出 Emacs,请键入:
    C-x C-c
    如果有未保存的缓冲区,这个命令会使您有机会保存它们。
                   
    这是退出 Emacs 的一般方法。请现在就试着操作一下,然后在 shell 的提示符下键入 emacs,重新启动 Emacs。
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/63367/showart_1678408.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP