当前位置:操作系统 > Unix/Linux >>

经验与技巧:Emacs编辑器的使用

A.1

  Emacs简介


  前面已经介绍过一种全屏幕文本编辑工具Vi,这里将介绍另外一种功能强大、应用也非常广泛的全屏幕文本编辑器Emacs。

  Emacs全称为Editor MACroS,由于其移植性极好,所以在当今世界的几乎任何一个操作系统上都可以见到它的身影。现在的Emacs已经超出了原来的单一的文本编辑功能,可以用来管理文件、阅读公告板,甚至可以进行WWW浏览。另外Emacs源代码可以使用C、C++、Lisp等语言定制,对一些编程爱好者来说,这无疑是一大福音,同时也使其灵活性大大增加。

  Emacs编辑器的使用、操作与使用其他标准的文本编辑器一样。键盘上普通的按键用来输入字符,而编辑器的操作命令是通过键盘上的一些特殊的按键来实现的,例如Ctrl、Alt等控制键。与Vi不同,Emacs编辑器没有特定的输入模式与命令模式之分。在输入文本时,也可以执行编辑命令,例如用Ctrl键来移动光标、保存文件等,而不必忍受切换模式的麻烦。

  Emacs 编辑器是一个复杂且非常灵活的编辑器.它有好几百个编辑命令。Emacs编辑器也有一些特殊的特性,例如多窗口特性,可以在编辑文件时同时显示两个窗口。也可以同时打开并对多个文件进行编辑与操作,并在屏幕上与之对应的编辑窗口内显示各个文件。

  Emacs编辑器通过巧妙地控制、操作工作缓冲区来实现其强大、灵活的功能。Emacs编辑器可以被认为是面向缓冲区的编辑器。在任何编辑器中编辑文件时,该文件将首先被拷贝到工作缓冲区中,而所有的编辑操作都在工作缓冲区中进行。许多编辑器在编辑文件时仅开辟一个工作缓冲区,因此仅能打开一个文件。而Emacs编辑器可以同时开辟并管理多个工作缓冲区,因此允许同时对多个文件进行编辑操作,还可以用编辑缓冲区来保存、删除或拷贝文本,用户甚至可以开辟目己的缓冲区,并在这些缓冲区中保存文本,必要时可以把这些缓冲区内的文本保存到文件中。

  A.2

  Emacs的启动与退出


  A.2.1

  Emacs的启动

  通过键入:

  $ emacs [文件名]

  进入Emacs文本编辑程序。如果不键入文件名,则将创建一个新文件而不是打开现存文件(如图A-1所示)。

  图A-1

  Emacs程序界面

  无论建立新文件还是打开一个现有文件,在处理方法上都是将其放入缓冲区中。和Vi一样,只要用户不发出存储到磁盘的命令,缓冲区的内容就不会写到文件中。同时这也使用户可以在多个缓冲区之间进行复制、粘贴等操作,非常方便。

  A.2.2

  Emacs的退出

  当对文件做必要的修改后需要退出时,有几种可行的途径。如果对文件未做任何修改,则直接使用Ctrl+x、Ctrl+c即可退出Emacs;如果对文件做了修改,则同样使用以上按键组合退出,只是这时系统将询问是否保存文件,如果键入y,则系统保存文件;如果是个新文件,系统提示输入文件名,保存后退出。如果键入n,则系统将再次询问是否真的不保存缓冲区中的内容退出,这时回答yes则放弃所做修改退出;当然也可以先使用命令保存文件,然后再退出,这时可以使用Ctrl+x、Ctrl+s组合键,系统将保存文件并退出。如果要把编辑程序存到另一个和原来文件不同的文件中,可以使用Ctrl+x、Ctrl+w组合键,然后指定新文件名即可。

  如果用户正在进行Emacs的有关操作,需要Linux执行其他的操作,可以选择下列任何一种方法。

  1. 中止Emacs并返回Linux shell

  通过按Ctrl+z就可以中止任何Linux应用程序。该组合键将当前的应用程序放入后台并向用户提供另一个shell提示符。若要重新激活Emacs,可键入命令fg,将后台任务带回前台。若正在使用的shell不懂此命令,键入exit,重新激活Emacs。

  2. 从Emacs中发出一个shell命令

  如果不需要完整的shell环境,可以考虑在Emacs中使用shell命令。要在Emacs中使用shell命令,按Ctrl+u、Esc、!,之后将提示输入一个shell命令。输入命令并回车,Emacs将命令传递给Linux shell,然后shell执行这个命令。如果不在前面加上Ctrl+u命令,Emacs将把输出结果放到一个叫shell执行结果缓冲区中。如果需要关闭该窗口可以使用Ctrl+x命令。

  A.3

  用Emacs编辑器创建文件


  利用Emacs建立新文件的步骤如下:

  1. 启动emacs(键入emacs并回车),可以看到图A-1所示的屏幕。

  2. 向缓冲区添加文件内容。

  3. 将缓冲区中的内容保存到某一文件中(假设文件名为mydata)。按Ctrl+x、Ctrl+s,然后键入文件名(mydata),再回车,就将缓冲区中的内容存入文件(mydata)中了。状态行上会显示如下信息:

  Wrote /root/mydata

  表示已建立了新文件(mydata),并把它保存到磁盘上。

  4. 按Ctrl+x、Ctrl+c退出Emacs。

  若退出Emacs时存在未保存的内容,Emacs会提示用户保存文件。在Emacs命令后输入想编辑的文件名,如果该文件名不存在,该文件将被创建。在下面的例子中,用户准备用Emacs编辑器来编辑名为mydata的文件。

  $ emacs mydata

  与Vi编辑器一样,Emacs编辑器是一个全屏幕编辑器。当编辑的文件是新创建的文件时,除屏幕的底部两行外,屏幕是空白的,光标将位于屏幕的左上角。如图A-2所示。

  图A-2

  Emacs编辑器的编辑屏幕

  A.3.1

  META键、Emacs屏幕及编辑模式

  Emacs编辑器的编辑操作与许多普通的文字处理器类似。Emacs编辑器仅有一种编辑模式��输入模式。如果键入任何字符键,键入的字符将被输入到编辑的文件中,所有的字符键都被用来输入字符,而不是用来输入命令。

  在一些计算机上有META键,即可以使用META-x组合键。在没有META键的计算机上,META-x等于先按Esc键,再按x键。有些系统的META键就是Alt(或者某一边的Alt键)。Emacs编辑命令基本上是一串Ctrl-x及META-x按键命令的组合(简记为C-x和M-x)。Alt键命令系列与Ctrl键命令系列的操作基本相同,即首先一直按住Alt键,再键入相应的按键,最后同时放开这两个键。但Esc键命令系列稍微有点不同:首先键入Esc键,然后放开该键,再键入相应的按键。Esc键的使用频率要比Alt键的使用频率高,因为很多早期的键盘根本没有Alt键。因此,本章主要介绍这些META键,同时必须记住,这些META键也可以用终端上的Alt键来代替。

  从图A-1、A-2所示的Emacs编辑器屏幕可以看出以下几个特点:首先有一组菜单选项(即Buffers、Files、Tools、Edit、Search、Mule、Help)。所有的Emacs命令都可从这个下拉菜单执行;屏幕的最下面一行是小缓冲区,主要用于显示使用过的命令;倒数第二行被称为状态行,主要显示如下信息:文件名、当前模式、光标位置和当前位置在文件中的相对位置;状态行以上的所有屏幕都被称为缓冲区。

  在状态行上显示的是正在编辑的文本的状态信息。状态行由几个部分组成,其形式如下:

  --1-:ST-F1 BulfferName (模式)--Lx―Place----------

  第一个域是ST(Status),它表示若最近对文件进行了修改,该修改的文件是否已经被保存过。如果该域是两个星号(“**”),表示该文本已经被修改过,但没有保存;如果该域是两个连字符(“--”),表示该文件从最后一次保存到现在还没有被修改过。

  BufferName域表示该工作缓冲区的名字,这个工作缓冲区名将是目前编辑的文件名。而Lx表示光标当前的位置,Place域表示光标当前处于被编辑的文件的何处。例如,如果Place域是40%,那么,表示光标当前大约位于文件的40%处。在下面的例子中,状态行表示该文件自最近一次修改以来,还没有被保存过,工作缓冲区的名字是mydata,光标处于文件的第4行。

  --1-:**-F1 mydata (Fundamental)--L4--All-----------

  Emacs 在小缓冲区下有“自动补全”功能。该功能可以为用户节省许多时间。当在小缓冲区输入文本串、一行长命令或输入文件名时,就可以用到自动补全功能。如果有两个以上的选择,它也会显示选项列表。这个功能对Ctrl+x、Ctrl+f等文件编辑功能也是有效的。

  A.4

  编辑操作及命令


  Emacs编辑器的编辑命令能执行许多操作,其他编辑器基本上也有类似的编辑操作。Emacs编辑器中所有的编辑命令基本上都通过Ctrl键、Alt键或Esc键组成的命令序列来完成与实现。所有这些编辑命令也都有对应的命令名,用户可以在小缓冲区中输入这些命令。如果从xterm上进入Emacs,则可从编辑器屏幕上方的下拉菜单中选择菜单选项来执行相应的命令。本节将介绍一些常见命令。

  A.4.1移动命令

  Emacs编辑器有一组基本的光标移动命令。Ctrl+f命令用来将光标前移(右移)一个字符,而Ctrl+b命令用来后移(左移)一个字符。Emacs编辑器把一个文件看作一种流式字符串,而不是一系列的文本行。向后移动光标命令将使光标沿流式文本左移一个字符(例如在当前行的行首将光标左移一个字符时,光标将回到上一行的行尾)。向前移动光标命令也是如此。

  也有一组编辑命令能使用户在文件中以行为单位移动光标或整屏移动光标。Ctrl+n命令将把光标移动到下一行上,如果此时光标位于屏幕最后一行,屏幕将下滚,使当前行的下一行显示在屏幕上。Ctrl+p命令将把光标移动到上一行,如果此时光标位于屏幕最顶行,屏幕将上滚,使当前行的前一行显示在屏幕上。Ctrl+v命令及Esc v命令将整屏滚动文本。Ctrl+v命令将使文本向前滚屏并显示下一屏文本,而Esc 命令将使文本向后滚屏并显示上一屏文本。
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,