GNU Emacs Manual 24.3 第一章

来源:互联网 发布:网络层传输的数据单位 编辑:程序博客网 时间:2024/05/22 02:07

ch1

Table of Contents

  • 1 导论
  • 2 屏幕的布局
    • 2.1 point
    • 2.2 Echo区域
    • 2.3 mode 行
    • 2.4 Menu Bar

1 导论

你正在读关于GNU Emacs的文档,GNU典型化的体现,自文档,可定制,拓展的编辑器。

我们说Emacs高级是因为它不仅仅能做简单地文本插入和删除。它能够控制子进程,自动缩进程序代码,一次性显示很多的文件等等。Emacs的编辑命令可以针对字符,单词,一行文本,句子,段落甚至是页面,还有许多编程语言中的注释和表达式。

自文档的意思就是任何时候,你都可以使用帮助命令去寻找你的可用选项,或者命令能做什么,或者找出特定的主题的所有命令。

可定制试着尼克很方便的修改的Emacs命令的行为。例如,如果你在使用一个编程语言,这个语言的注释是以"<**"开始的, 然后以"**>"结束的,你可以告诉Emacs的注释操作命令使用这些字符串。(参见23.5节,注释)。举个另外的例子,你可以重新绑定基本的光标移动命令 (上下左右)到任何你觉得合适的键位上去。

可拓展指的是你可以超越简单地定制Emacs,创建新的命令。新的命令都是简单地用lisp语言编写的, 这些代码用的是Emacs自身的lisp解释器执行产生效果的。现存的命令也可以在正在编辑的时候被重新定义为别的效果,而不需要重启Emacs。Emacs中的许多命令都是用lisp编写的,只有少部分为了高效率而用C语言编写。想学习Emacs lisp的人请参见(Emacs lisp导论)。

2 屏幕的布局

在一个图形界面,比如GNU/Linux使用的X Windows系统,Emacs占用一个图形窗口。在一个字符终端,Emacs展现为整个的终端屏幕。我们接下来使用Frame这个术语来表示Emacs展现的图形窗口或是字符屏幕。Emacs在这两种窗口中表现的非常类似。Emacs通常启动一个frame,但是你可以在你想要的时候创建另外的一个(参见十八章,Frames)。每个frame包含几个显著的region。在frame最上面的是菜单栏,你可以从菜单栏中寻找到到许多的命令。在凸显界面中,在菜单栏下面的是工具栏,你可以通过单击那些图标实现编辑命令。在frame最下面的是echo区域,这个区域会展现一些提示信息,还是Emacs询问的输入区域。

在工具栏和echo区域中间的是window区域,在这个手册中我们使用window,这个词语在图形界面系统中通常有别的意思,但是,我们在这里用图形窗口作为frames。

一个Emacs的window是你编辑文本的buffer,在图像界面中,window往往在一侧拥有一个滚动条,你可以使用这个滚动条滚动这个buffer,在window的最后一行是mode行,这个区域展现了所有你正在编辑的buffer的信息,比如是否有未保存的改变,正在使用的编辑模式,行号等等。

当你启动Emacs时,frame中往往只有一个window,然而,你可以水平或者竖直的把这个window分成许多window,每一个window都能独立的展现一个buffer。

在任何时候,其中的一个window是被选择的window,在图形界面中,被选中的window会展现一个显著的光标(通常是闪烁的方块)而其他window会表现一个不显著的光标(通常是一个空的方块),在字符终端中,通常只有一个光标,它展现了被选择的window。被选中的window中的buffer被称作当前buffer,它就是正在编辑的地方。很多Emacs命令都隐含着是对当前buffer进行动作。当你在图形界面中使用很多的frame时,选定一个frame即选定了一个window。

2.1 point

在被选中的window中光标显示的位置叫point,这个地方也是很多编辑命令产生效果的地方。很多Emacs命令将point移动到buffer的别的位置。比如,你可以使用鼠标左键在你想要的任何地方放置point。

默认情况下,光标在被选中的window中显示的是一个固体方框像是一个字符,但是你得把它想象成位于两个字符之间,分割的地方为光标的左侧。例如,如果你输入文本"frob",然后光标盖在了'b'上,则point位于'o'和'b'之间,如果你输入字符'!',则结果会是'fro!b'。

如果你在Emacs中编辑好几个文件,那么每个文件拥有自己的buffer,每个buffer拥有自己的point,每个buffer会记住自己的point位于何处,而不在乎这个buffer是否是正在编辑的buffer。此外,如果一个buffer在多个window中显示,每个window拥有自己的point的值。

(参见11.20节 光标显示 查看如何控制Emacs如何显示光标)。

2.2 Echo区域

在Frame的最先面是echo区域,这个区域用来显示一部分特殊用意的文本信息。

顾名思义,echo区域是用来显示一些信息的回应的,他通常用来显示你敲击的多字符命令中的一个一个的字符。单字符的命令没有回显。多字符命令的回显是在你在敲击多字符的过程中,中间有一秒的间隙的话,它就会回显你输入过的字符,方便提示输入过程。当回显过程开始,剩下的命令会立即回显你输入的内容。这种行为的设计是为了尽快给出用户的响应。

当一个命令不能完成它的工作室,它的错误也会显示在回显区域中,错误信息往往伴随着嘟嘟声或者屏幕闪烁。

有些命令会在回显区域显示告诉你命令已经做了什么或者告诉你一些特定的信息。这些有用的信息不详错误信息,他们不会伴随着嘟嘟声或者闪烁屏幕。比如,C-x (按住CTRL然后键 入x,然后释放CTRL键入)显示一个见识当前point的字符的信息,在buffer中的位置,还有window中的列号。那些运行时间很长的命令往往会显示"…",有时还显示进程的百分比,然后在结束的时候显示'done'。

回显区域的信息全都存在一个特殊的buffer,名称叫"Messages"。(我们还未解释buffer,参见16章获得更多的信息)。如果你在屏幕上错失了信息,那么你可以在*Message*buffer中重新找到。*Messages*buffer的极限行数是通过message-log-max这个变量设定的。(我们还未解释变量,参见33.2节获取更多的信息)。超过这个极限的话,会从开始的部分删除一行,在结尾增加新的一行。

参见11.23节 [自定义显示],可以找到Emacs使用回显区域的使用选项。

回显区域也被用来展示minibuffer,minibuffer是一个你可以给命令输入参数的特殊window,比如一个将要编辑的文件名称。当minibuffer正在被使用时,回显区域会立即显示输入的文本,而且光标也会在minibuffer中显示,你也可以键入C-g放弃minibuffer中的输入。(参见 第五章 [minibuffer])。

2.3 mode 行

在每个window最下方的是mode行,它描述了当前buffer正在进行的信息。当只有个window时,mode行会在回显区域的正上方显示(也就是frame的倒数第二行)。在图形界面中,mode行是3D效果的。Emacs会为正在选择的window的mode行使用不同于未被选择的window的颜色,就是为了让它更加突出。

mode行上的文本拥有下列的格式:

cs:ch-fr buf pos line (major minor)

在文本终端中,这些文本后面会跟着一连串的破折号直到window结束,这些破折号在图形界面中被忽略了。

格式中的cs和其后面的冒号描述了当前buffer的字符集和换行符。一般的,Emacs会自动帮你处理这些设置,但是这些信息一般来讲还是很有用的。

cs描述了当前buffer的字符集(参见19.6节 [编码系统])。如果它是'-',那就表示没有特殊的字符集需要处理。'='表示未转换,通常表示当前文件包含非文本字符。其他的字符表示编码系统的名称,比如'1'表示ISO Latin-1。

在字符终端中,cs之前有两个额外的字符描述了键盘输入终端输出的编码系统,此外,如果你使用一种输入法,cs之前会显示你的输入法(参见 19.4节 [输入法])。

在cs之后通常是一个冒号,那就表示当前文件的行尾是个特别的约定。通常,行与行之间使用换行符表示的,但是还有另外两种约定也经常被使用,在MS-DOS中,是使用\r\n,那么那个冒号会变成'\'或者'DOS',这个取决于你的操作系统。另外一种约定是在老的MAC操作系统中,它使用的是'\r',当编辑此类文件时,冒号会被替换成'/'或者'Mac'。在一些系统中,Emacs使用'Unix'代替冒号表示是是使用'\n'分割行的。

在ch后面的,如果buffer当显示的就是硬盘上的未被更改过的内容,会显示'–',如果被修改过了,那么会显示'**'.在一个只读buffer中,会显示'%*'表示被修改了,'%%'表示没有被修改。

在ch后面的字符往往是一个'-',然而当当前的buffer目录是在远程主机上是,会使用'@'代替。(参见 15.1节 [文件名称])。

fr描述了当前的frame的名字(参见 第十八章 [Frames])。它只会在字符终端中被体现出来,初始的frame的名字是'F1'。

buf通常指的是你正在编辑的文件名名称(参见 十六章 [Buffers])。

pos告诉你是不是在当前的位置之上还有未显示的文本或者下面还有未显示的文本,如果你的buffer很小,全部内容都已经显示出来的话,pos会显示'ALL',否则,'Top'表示你正在查看buffer的开始部分,'Bot'表示你正在查看buffer的底部,或者'nn%'表示距buffer的顶部滚动的百分比。通过Size Indication mode,你也可以展现buffer的大小。(参见11.18节 [Optional Mode Line])。

major是当前buffer使用的major mode的名字,major mode是buffer主要的编辑模式,比如Text mode,Lisp mode,C mode等等。(参见 20.1节 [Major Modes])。有的major mode会除了显示major的名字以外还会显示额外的信息。比如,Compilation buffer和Shellbuffer会显示子进程的状态。

minor是一系列被启用的minor mode,这些是在major mode基础上添加的一些二外的特性的mode。(参见 20.2节 [Minor modes])。

一些特性也会和minor mode一起显示出来,虽然它们不是minor mode,比如'Narrow'表示当前buffer正在编辑受限制的部分(参见 11.5节 [Narrowing])。'Def'表示一个键盘宏正在被定义(参见第十四章 [Keyboard Macros])。

除此之外,如果Emacs正在一个递归的编辑级别,'[…]'会包裹在那些模式外面。因为Emacs的递归编辑模式是全局的,所以这个'[…]'会在所有的window的mode line上显示。(参看 31.9节 [Recursive Edit])。

你也可以改变mode line的内容的显示格式(参看 11.18节 [Optional Mode Line])。除此之外,mode line也可以和鼠标互动;单击mode line的不同部分都会产生很多命令的效果。(参看 18.5节 [Mode Line Mouse])。

2.4 Menu Bar

每一个Emacs frame通常在最上方有一个menu bar去进行一般的操作,,这里就不在赘述了,你可以自己很轻松的看到他们。

在一个图形显示中,你可以从menu bar上用鼠标选择一个命令。在右边缘有个箭头的菜单项说明他有子菜单。'…'表示这个命令会在使用时要求你输入一些参数。

菜单栏中的一些命令拥有它本来的键绑定,在菜单向后面用括号括起来的部分就是他的快捷键,可以使用C-h k查看命令的全称和文档。(参见 7.1节 [Key help])。

除了使用鼠标,你也可以通过按下F10键触发第一个菜单项,(使用menu-bar-open命令)。你可以使用方向键去选择菜单项,使用RET触发菜单项的选定,或者是用ESC关闭菜单。

在一个字符终端中,你可以按下'M-''或者F10(使用tmm-menubar),这个命令使得你可以通过键盘选择一个菜单项。按下之后,一个临时的选择框会在回显区域显示出来,你可以通过上下方向键选择菜单项,使用RET选择菜单项,每个菜单项都以一个字母或者数字代表(通常是首字符)。

Date: 2014-06-22T14:11+0800

Author: kirchhoff

Org version 7.9.3f withEmacs version 24

Validate XHTML 1.0
0 0
原创粉丝点击