Emacs 教程中文版

你会看到重复键入的C-a什么也不做,而重复键入的M-a则会移动一个以上的句子。

光标在文本中的位置也叫“点(point)”。在段落里,光标标示出了点在屏幕上文本里的位置。

下面是简单的光标移动命令的总结,包括单词和句子的移动命令:

C-f      向前移动一个字符。

C-b      向后移动一个字符。

M-f      向前移动一个单词。

M-b      向后移动一个单词。

C-n      移动到下一行。

C-p      移动到上一行。

C-a      移动到行首。

C-e      移动到行尾。

M-a      向前移动到句子的开头。

M-e      向后移动到句子的末尾。

>> 试着对每一个命令都实践几次,它们都是经常要用到的命令。

另外两个重要的光标移动命令是M-<(Meta小于),它移动光标到整个文本的开头,M-> (Meta大于)它移动光标到整个文本的末尾。

在多数终端上,“<”在逗号的上面,所以你必须用Shift键来输入它。在这些终端上,你也必须用Shift键来输入M-<;没有Shift键,你可以输入M-逗号。

>> 现在就试试M-<,移动到本教程的开头,然后再用C-v移回这里。 现在就试试M->,移动到本教程的末尾,然后再用M-v移回这里。

你也可以用方向键来移动光标,如果你的终端有方向键的话。我们建议学习C-b, C-f,C-n和C-p有三个原因。第一,它们能在所有类型的终端上工作。第二,你获得了使用Emacs的锻炼,你将会发现输入这些CTRL加字符比按方 向键要快(因为你不必把你的手从键盘上移开)。第三,一旦你养成了使用这些CTRL加字符的命令的习惯,你就能一样容易的学习其他高级的光标移动命令。

大多数Emacs命令接收一个数字参数;对大多数命令来说,这表示命令重复的次数。输入重复命令次数的方法是在输入命令之前按C-u和数 字。如果你有META(或EDIT或 ALT)键,则有另一种方法输入数字参数:在按住META键的时候输入数字,我们建议学习C-u方法,因为它能在任何终端上工作。

例如,C-u 8 C-f 向前移动8个字符。

>> 试着使用带数字参数的C-n或C-p,只用一个命令就把光标移动到与本行相邻的 行上。

绝大多数命令把数字参数当作重复次数,但也有几个例外。C-v和M-v就是。当给出一个参数,只是上滚或下滚数字指定的行数而不是屏数。比如,C-u 4 C-v滚动4行屏幕。

>> 现在试试 C-u 8 C-v。

这将使屏幕滚动8行,如果你想往回滚动的话,键入一个带参数的M-v。

如果你正在使用X窗口,在Emacs窗口的左手边有一个叫做滚动条的矩形区域。你能通过用鼠标点击滚动条来滚动文本。

>> 试着在滚动条顶部的高亮区域点击中键。这将使文本滚动,滚动的位置取决于 你点击的长短。

>> 试着按住鼠标中键上移或下移鼠标,你将看到当你移动鼠标时文本会上下滚动。

*** 当EMACS挂起时(WHEN EMACS IS HUNG)

------------------------------------------------------------------

**

当Emacs停止响应你的命令时,你能用C-g把它安全的停止。当一个命令执行了太长的时间时你可以用C-g把它终止。

你也可以用C-g来取消数字参数和输入后又不想执行的命令。

>> 键入C-u 100 产生一个值为100的数字参数,然后按C-g。再按C-f。它只会移动 一个字符,因为你用C-g取消了参数。

如果错误的输入了一个,你能用C-g消掉它。

*** 禁止命令(DISABLED COMMAND)

----------------------------------------------------

**

一些Emacs命令是“禁止”的,所以新手不会因偶然而执行它。

如果你键入了一个禁止命令,Emacs会显示一条消息说明这条命令是干什么的,并且问你是否需要执行它。

如果你真的想要执行,敲空格键继续。通常,如果你不想执行禁止命令,用“n”来回答。

>> 输入:(一条禁止命令),然后用n来回答。

*** 窗口(WINDOWS)

-----------------------------

**

Emacs 能有好几个窗口,每一个显示自己的文本。我们将在后面解释怎样对多窗口操作。现在我们要解释怎样去除多余的窗口屏回到基本的单窗口编辑状态。这是一个例子:

C-x 1 一个窗口(也就是除去其他所有的窗口)。

因为Control-x跟了数字1。C-x 1使包含光标的窗口占满整个屏幕,屏删除其他所有窗口。

>> 把光标移动本行并输入 C-u 0 C-l。

>> 键入Control-h k Control-f。 看这个窗口如何缩小,并在按Control-f的时候出现了一个新的文档窗口。

>> 键入C-x 1 并且看到那个文档窗口消失了。

*** 插入和删除(INSERTING AND DELETING)

---------------------------------------------------------------

**

如果你要插入文本,只须输入文本。输入的字符你能见到,比如A,7,*等等。Emacs 会立即把它们插入。键入(回车键)插入一个换行符。

你能用删除你输入的最后一个字符。就是键盘上标着“Del”的键。在某些情况下,“Backspace”键作用和一样,但不总是这样!

通常,立即删除光标前面的那个字符。

>> 输入几个字符,然后用删除它们。不必担心这个文件回被改变;你不会 替换主教程。这只是你的个人拷贝。

当一行文本太长而超过屏幕宽度时,这一行会在屏幕的下一行被“继续”。文本的右边会有一个反斜杠“\”表示它被继续。

>> 插入文本直到最右边,然后再插入。你将看到一个继续了的行。

>> 使用删除文本直到行的长度在屏幕的宽度以内。继续的行将会消失。

你能像删除其他任何字符一样删除换行符。删除两个行间的换行符会使它们合并为一行。如果这一行很长屏幕显示不下的话,将会用一个继续的行来表示。

>> 把光标移动到一行的开头按这将使本行和上一行合为一行。

>> 按重新插入你删除的换行符。

记住大多数的Emacs命令能接收一个重复次数。这包括文本字符,把一个文本字符重复的插入几次。

>> 键入这个-- C-u 8 * 来插入 ********

你现在已经学习了Emacs的大多数输入和排错的方法。你也能一样的删除单词或行。这是删除操作的摘要:

     删除光标前面的字符

C-d               删除光标后面的字符

M-  除去光标前面的单词

M-d               除去光标后面的单词

C-k               除去从光标位置到行尾的内容

M-k             除去到当前句子的末尾

注意比较,C-d与M,M-d和C-f,M-f(不是一个控制字符,但不用担心)。C-k和M-k就象C-e,M-e。

当你一次除去不止一个字符时,Emacs将保存着这些文本,所以你可以恢复它们。恢复那些被除去的文本称作“拉(yanking)”。你能在除去文本的同一地方拉回它们,或是在文本的其他地方。你能对文本拉上几次以产生它们的多个拷贝,拉的命令是 C-y。

注意“除去(killing)”与“删除(Deleting)”之间的区别,被除去的东西能被拉回来,而被删除的不能。通常除去能除去很多的文本屏保存,而删除只能除去一个字符,或是空行或空格,并且不保存。

>> 把光标移到一个空行的开头,键入C-k除去这一行。

>> 按第二次C-k,你将看到剩下的空行也被除去了。

注意单个的C-k除去行的内容,第二个C-k除去行本身,并且使后面的所有行上移。特别要注意数字参数:它除去很多行和它们的内容,这不仅仅是重复。C-u 2 C-k 除去两行和它们剩下的空行;而按两次C-k并不会这样做。

要在当前光标处找回上次被除去的文本;按C-y

>> 试一试,用C-y把文本拉回来。

把C-y考虑为你把某人从你这里拿走的东西再拿回来。注意你如果在一行上按了几次 C-y,所有被除去的文本是存在一起的,所以按一次C-y将拉回全部的行。

>> 现在就试一下,按几次C-k。 现在找回被除去的文本;

>> 按C-y。然后把光标下移几行再按一次C-y,你现在会看到怎样拷贝这些文本。

当你要拉回一些被除去的文本该怎样做呢?C-y只能拉回最近被除去的文本。但以前的文本并没有消失。你能用M-y来恢复它。当你用C-y拉 回最近被除去的文本后,换成 M-y可以拉回以前被除去的文本。键入一次又一次的M-y可以拉回更早以前被除去的文本。当你找到要寻找的文本,不必做任何事来保持它,只须离开拉文本的 地方继续你的编辑。

如果你M-y了足够多的次数,你会回到开始点(最近被除去的)。

>> 除掉一行,移开,再除掉另一行。 然后用C-y拉回第二行。 然后换成M-y拉回被除掉的第一行。 再按一次M-y看看得到了什么。继续按直到拉回被除去的第二行;然后再做几次。 如果原意的话,你可以给M-y加正的或负的数字参数。

*** 撤销(UNDO)

--------------------

**

如果你对文本作了一些改动,然后又发现这样做是错误的,你能用撤销命令,C-x u 撤销这些改变。

通常,一次C-x u撤销一个改变;如果你在一行上重复几次C-x u,就会重复几次撤销操作。

但有两个例外:不改变文本的操作(包括光标移动和滚屏命令)不算在内;只能处理20 次。

>> 用C-k除去这一行,然后按C-x u 它将重现出来。

C-_是一个可选择的撤销命令;它所作的工作和C-x u 完全一样,只是更容易输入。 C-_的缺点是有些键盘上没有它,这就是为什么还提供C-x u的原因。在某些终端上你可以按住CTRL的时候再敲/来输入C-_。C-_或C-x u把数参数字当作重复次数。

*** 文件(FILES)

-------------------

**

为了永久保存你编辑的文本,你必须把它放到一个文件里。否则当你退出Emacs的时候它就会消失。你通过“查找(finding)”文件,把你编辑的内容放到文件里。(也称为 “访问(visiting)文件”)。

(译注:为了保持与原文的一致性,把find译为“查找”,但是这里和后面出现的 “查找文件”指的都是打开文件的意思。)

查找(finding)一个文件意味着你在Emacs里看文件的内容,在多数情况下,也就是你在编辑它。但是,你用Emacs对它作的改变 并不是永久行的,除非你“保存(saving)” 它。所以你可以避免把一个改了一半的文件留在系统上。甚至你保存了文件,Emacs也会把原始文件换个名字保留下来,以防过后你发现对文件的改动是错误 的。

如果你观察屏幕的你将看见一个开始和结尾都是破折号的行,并且以“–😗*-- TUTORIAL”或之类的东西开始。屏幕的这部分通常显示你正在访问的文件的名字。现在,一个叫做“TUTORAL”的文件,它是你的Emacs教程的 个人拷贝。当你用Emacs 查找一个文件,文件名会出现在同样的位置。

查找和保存文件命令不像前面学的那些命令。它们都以字符Control-x开始。以 Control-x起头的是一个完整的命令系列;它们中的许多都是对文件,缓冲,和相关的东西进行操作的。这些命令有两个,三个或四个字符长。

关于查找文件命令的另一件事是你必须给出你需要的文件的文件名。我们说这个命令 “从终端读取一个参数”。(在这种情况下,参数是文件的名字);当你键入命令C-x C-f后,Emacs会提示你输入文件的名字。你输入的文件名会出现在屏幕底部的行上。这个底部的行称为微型缓冲(minibuffer)用于这类较短的 输入。你能用Emacs本身的编辑命令来编辑文件名。

当你正在输入文件名(或其他任何微型缓冲区输入),你能用命令C-g来取消。

>> 键入命令C-x C-f,然后输入C-g。这将取消微型缓冲,也取消了C-x C-f命令所使 用的微型缓冲,所以你不查找任何文件。

当你输完文件名后用来结束。然后C-x C-f开始工作,并开始寻找你所选择的文件。当C-x C-f命令结束后微型缓冲区也消失了。

过一小会儿文件的内容就会显示在屏幕上,然后你就能对它进行编辑了。当想永久保留你的改动时用命令:

C-x C-s     保存文件(save the file)。

这个操作会把Emacs里的文本拷贝到文件里。在你第一次作的时候,Emacs把原始文 件改为一个新名字以使它不至于丢失。新名字是在原来名字的后面加一个“~”。

保存结束后,Emacs打印出被写的文件的文件名。你应当经常的保存,万一系统崩溃 的话你不至于丢失太多的工作。

>> 键入C-x C-s来保存你的教程的拷贝。屏幕的底部会打印出“Wrote…TUTORIAL”。

注意:在某些系统上,输入C-x C-s 会把屏幕冻结住使你从Emacs看不到更多的输出。这 表示这个操作系统的“特性”叫做“控制流程”,它拦截了C-x不让它到达Emacs那里。 要使屏幕解冻,输入C-q,然后看Emacs手册里的“Spontaneous Entry to Incremental Search”一节,按上面的建议来对付这种“特性”。

你能查找一个已存在的文件,来查看它或编辑它。你也可以查找一个尚未存在的文件。这是 Emacs:里创建文件的方法:查找文件,将会出现一个空白,然后插入文件的文本。当你 “保存(saving)”的时候,Emacs将会用你插入的文本创建文件。从那时候起,你可以认为你在编辑一个存在的文件了。

*** (缓冲)BUFFERS

--------------------------

**

如果你用C-x C-f查找第二个文件,第一个文件仍然留在Emacs里。你可以再用C-x C-f查找一次来切换回去。用这种方法你在Emacs里有很多文件。

>> 输入C-x C-f foo 来建立一个名为foo的文件。然后插入一些文本,编辑它,并 用C-x C-s来保存“foo”。 最后输入C-x C-f TUTORIAL以回到本教程。

Emacs把每个文件的文本都保存在一个叫“缓冲(buffer)”的东西里。查找(打开)一个文件就会在Emacs里产生一个新的缓冲。要看你当前运行的Emacs里存在的缓冲列表,输入:

C-x C-b     列出缓冲(list buffers)

>> 输入 C-x C-b

观察每个缓冲都有一个名字,它可能也有一个它所保存的文件的文件名。一些缓冲不对应文件。比如,叫“*Buffers List*”的缓冲没有任何文件。这个缓冲只包含由C-x C-b产生的缓冲列表。你在Emacs窗口里看到的任何文本都是某个缓冲的一部分。

>> 输入 C-x 1 消除缓冲列表。

如果你对一个文件的文本作了改动,然后查找另一个文件,第一个文件并不保存。它的改变保存在Emacs里,在那个文件的缓冲里。被建立或编 辑的第二个文件的缓冲并不影响第一个的。这一点很有用,但这也意味着要有一个便捷的方法来保存第一个文件的缓冲。如果要用 C-x C-f切换回去只是为了按C-x C-s保存它将会是一件令人讨厌的事。所以我们用

C-x s     保存缓冲(save the buffer)

C-x s 向你询问每个改动过但未存盘的缓冲,对每个这样的缓冲都询问是否保存。

>> 插入一行文本,然后按C-x s。 将会问你是否保存叫TUTORIAL的缓冲。 输入“y”来回答是。

*** 扩展命令集(EXTENDING THE COMMAND SET)

-----------------------------------------------------------------------

**

有太多的Emacs命令,大大超过了Contorl和meta加上字符所能表示的数量。Emacs用X(扩展 eXtand)命令来解决这个问题。有两种风格:

C-x     字符扩展,后跟一个字符。

M-x     名字命令扩展,后跟一个长名字。

这些命令通常有用,但不如你已经学过的那些命令使用的频繁。你已经见过了它们中的两个:文件命令C-x C-f 用于查找和C-x C-s用于保存。

另一个例子是结束Emacs的命令C-x C-c(不必担心你所作的改动会丢失,在退出Emacs 之前,C-x C-c会提示你保存每一个改动过的文件)。

C-z命令用于*临时*退出Emacs,所以你能回到原来运行的Emacs里。在允许这样做的系统上,C-z把Emacs“挂起”;就是说回到外壳(shell)下,但并不破坏运行的Emacs。在大多数外壳上,你能用‘fg’命令或‘%emacs’来继续Emacs。

在不支持挂起的系统上,C-z建立一个子外壳(subshell)运行于Emacs下以使你能运行其他程序然后回到Emacs;这并不是真 正的“退出”Emacs。在这种情况下,通常从子外壳回到Emacs的外壳命令是‘exit’。 有很多C-x 命令,这是已学过的一个列表:

C-x C-f     查找文件

C-x C-s     保存文件

C-x C-b     缓冲列表

C-x C-c     退出Emacs

C-x u     撤销操作

被称作扩展命令的命令的使用频率都不太高。或者是只在某些模式下使用。一个例子是替换字符串的命令,它在全文里把字符串替换为其他的。当你 键入M-x, Emacs会在屏幕的底部提示你输入命令;在这种情况下,是“replace-string”。比如输入“repl s”, Emacs会把命令补全。用来结束命令。

替换字符串命令要求两个参数–要被替换的字符串和用来替换的字符串。你必须用 来结束两个参数。

>> 把光标移上两行,然后输入M-x repl schangedaltered 。 注意现在这一行改变了:你把光标初始位置后的所有单词c-h-a-n-g-e-d替换为了 “altered”

*** 自动保存(AUTO S***E)

------------------------------------

**

当你改动了一个文件还未存盘的话,所作的改动也许会由于系统崩溃而丢失。为防止这种情况发生,Emacs在编辑时为每个文件提供了“自动保 存(auto save)”。自动保存的文件的文件名前后都有一个#号;例如,如果你编辑的文件名叫“hello.c”,自动保存的文件的文件名就叫 “#hello.c#”。当你正常的保存了文件后,Emacs会删除这个自动保存的文件。如果遇到死机,你能打开那个文件后按M-x recover file来恢复你的编辑,(是你编辑的文件而不是自动保存的文件)。当提示确认时,输入yes 来继续恢复自动保存的数据。

*** 回显区域(ECHO AREA)

------------------------------------

**

如果Emacs发现你输入命令的速度很慢的话它会在屏幕底部为你显示出来,这个区域叫 “回显区域”。

*** 模式行(MODE LINE)

---------------------------------

**

回显区域上面的一行称为“模式行(mode line)”。模式行显示与下面类似的东西:

–**-Emacs: TUTORIAL (Fundamental)–L670–58%----------------

这一行给出了有关你在编辑的文件和Emacs状态的有用信息。

你已经知道了文件名意味着什么。–NN%–指出你现在在文本里的位置;它意味着上面还有NN%的文本。如果是在文件的开头,会用 --Top-- 来代替–0%–。如果是在行的末尾,会显示–Bot–。如果你正在看的文本内容很少,可以全部显示在屏幕上,模式行会说 --All–。

前面的星号表示你已经改动过文本了。一旦你保存了文件或打开了一个新文件,模式行的这部分就不是星号而是破折号了。

模式行上括号里的部分是现在的编辑模式。现在是缺省的基本(Fundamental)模式。它是 “主模式(major mode)”的一种。

Emacs有很多不同的主模式。有些意味着不同的语言或不同的文本。如Lisp模式(Lisp mode),文本模式(text mode)等等。在任何时候有且只能有一种主模式被激活。并且它的名字会出现在现在显示“Fundamental”的位置上。

每一个主模式都有些自己的命令。就象不同的编程语言的注释看起来不同一样。每种主模式插入的注释也不同。可以用扩展命令切换进某种主模式。例如,M-x fundamental-mode 是切换进基本模式。

>> 输入 M-x text-mode

不必担心,没有命令会给Emacs带来很大改变。但是你可以看到现在M-f和M-b把省略号当作单词的一部分。而先前,在基本模式里,M-f 和M-b把省略号当成当成分隔符。

主模式通常作诸如此类微小的变化:大多数命令在每个主模式里作“同样的工作”,但又有些微小的不同。

要观看关于你现在的主模式的文档,按C-h m。

>> 键入C-u C-v一次和多次使本行接近屏幕的顶端。

>> 输入C-h m ,看看文本模式和基本模式有些什么不同。

>> 按C-x 1 从屏幕上关掉这个文档。

主模式之所以叫做主模式是因为也存在从模式,从模式与主模式完全不同。每个从模式可以自己打开或者关闭,独立于所有其他从模式,也独立于你的主模式。所以你可以不用从模式或者同时用很多种从模式。

有一种从模式很有用,特别是在编辑英文文本时。它是自动填充模式(auto fill mode)。当这个模式打开的时候,当输入的文本过宽的时候就会自动折行。

你能用M-x auto-fill-mode来打开自动填充模式。如果此模式已经打开M-x auto- fill-mode则把它关闭。我们把这叫做切换开关。

>> 输入M-x auto-fill-mode。然后插入一些“asdf”直到看到这行被分为两行。你必须在中间放一些空格,只有到空格的时候才会换行。

通常边界宽度是70,但你能用带数字参数的C-x f 命令来改变它。

>> 键入带参数20的C-x。(C-u 20 C-x f) 然后输入一些文本看现在每行只有20个字符了。然后用C-x f把它改回70。

如果你在一个段落的中间产生了改变,自动填充模式将不会重新填充。要想重新填充段落,当光标在段落里的时候按M-q。

>> 把光标移到上一段按 M-q。

*** 搜索(SEARCHING)

-----------------------------

**

Emacs 能朝前和朝后搜索字符串(指相邻的一些字符或单词)。搜索是一个移动光标的操作,它把光标移动到字符串出现的下一个地方。

Emacs 的搜索命令和其他大多数编辑器不同,它是“增量式(incremental)”的,这意味着搜索在你键入字符串时就开始了。

开始一个向前搜索的命令是C-s,C-r是往回搜索。但等等,先别忙。

当你输入C-s是你将注意到在回显区域会出现一个字符串“I-search”。这告诉你Emacs开始了一个增量搜索,并在等待你输入要搜索的东西。结束查询。

>> 现在键入C-s开始一个搜索。慢慢的输入单词‘cousor’,在输入每一个字母的时候停顿一 下,注意看光标发生了什么。

>> 再输入一次C-s,来搜索“cursor”出现的下一个地方。

>> 现在输入四次看看光标移到了哪里。

>> 输入结束搜索。

看到发生什么了吗?在Emacs的增量搜索里,你输入多少字符串它就试着搜索这些字符出现的地方。到字符串出现的下一个地方,只须再按一次 C-s。要搜索的字符串不存在的话,Emacs 会发出蜂鸣并告诉你当前的搜索“失败(failing)”,按 C-g 也是终止搜索。

注意:在某些系统上,输入 C-s 会把屏幕冻结住使你从Emacs看不到更多的输出。这 表示这个操作系统的“特性”叫做“控制流程”,它拦截了C-s不让它到达Emacs那里。 要使屏幕解冻,输入C-q,然后看Emacs手册里的“Spontaneous Entry to Incremental Search”一节,按上面的建议来对付这种“特性”。

如果你在搜索的过程里按了,你将注意到要搜索的字符串的最后一个字符会被删除并且光标会回到上一个被搜索到的 地方。比如,假设你键入了“c”,将会搜索“c”第一次出现的地方。然后如果你键入“u”,光标将移到“ cu”第一次出现的地方。现在键入。这将从搜索的字符串里把“u”删掉,这时光标回到“c”第一次出现的地方。

如果你在搜索时按了Control或meta键加字符(少数几个少数命令例外,如C-s和C-r),搜索将被终止。

C-s向当前光标的后面搜索字符串出现的地方。如果你需要搜索前面文本里的东西,用C-r来代替。我们所介绍的C-s的每个特性C-r也支持,除了方向相反。

*** 多窗口(MULTIPLE WINDOWS)

------------------------------------------------

**

Emacs有一个非常好的特性是能同时在屏幕上显示不止一个的窗口。

>> 把光标移到本行上按C-u 0 C-l。

>> 现在按C-x 2,它把屏幕分裂成两个窗口,每个窗口都显示本教程。光标在上面的窗口里。

>> 按C-M-v 滚动到下面的窗口里。(如果你没有一个真正的Meta键,那么按ESC C-v)

>> 按 C-x o (“o” 指 “其他(other)”) 把光标移到到下面的窗口里。

>> 用 C-v 和 M-v 滚动下面窗口里的文本。 在上面的窗口里看本教程。

>> 再次按 C-x o 使光标回到上面的窗口里。 现在光标象以前一样在上面的窗口里了。

你能一直用C-x o在窗口间切换。每个窗口都有它自己的光标位置,但仅有一个窗口能显示活动的光标。所有的编辑命令都发生在那个显示光标的窗口上。我们把这个窗口叫做“选中窗口( selected window)”。

当你在一个窗口里编辑文本,而用另一个窗口作参考时命令C-M-v非常有用。你总是能把光标留在所编辑的地方,而用C-M-v来翻阅另一窗口。

C-M-v 是 CONTROL-META 加字符的一个例子。 如果你有一个真正的META 键,你能同时按住 CTRL 和 META 再按“v”来输入C-M-v。CTRL 和 META 谁先按谁后按无所谓。

如果你没有一个真正的META 键, 你可以用 ESC 来代替。这时候次序是有关系的: 你必须让 ESC 跟在 CTRL-v后面; 否则 CTRL-ESC v 将不工作。 这是因为 ESC 是一个有意义的字符而不是一个修饰字符。

>> 输入 C-x 1 (在上面的窗口里) 以消除下面的窗口。

(如果你在下面的窗口里键入C-x 1,将会把上面的窗口去掉。可以把这个命令看作是“只保留你现在在的那个窗口。)

你不必一定要在两个窗口里显示同样的缓冲。如果你在一个窗口里键入C-x C-f查找文件,另一个窗口的内容不会改变。你能独立的在每个窗口里查找文件。

这是让两个窗口显示不同内容的另一种方法:

>> 在你输入的文件名后再输入C-x 4 C-f,然后用结束。会看到指定的文件出现在下面 的窗口里。光标也在那里面。

>> 键入C-x o 回到上面的窗口,然后输入C-x 1删掉下面的窗口。

*** 递归编辑层(RECURSIVE EDITING LEVELS)

----------------------------------------------------------------

**

有时候你会进入“递归编辑层(recursive editing level)”。由模式行上的方括号指示。它在主模式名的括号外面。例如你也许会看到(Fundamental)变成了[(Fundamental)]。

要退出递归编辑层,按ESC ESC ESC。这是一个通用的退出命令,你也可以用它除去额外的窗口,或者退出微型缓冲。

>> 输入 M-x 进入一个微型缓冲; 然后用 ESC ESC ESC 离开。

你不能用C-g来退出递归编辑层。这是因为C-g只能取消在递归编辑层里面的命令。

*** 获取更多的帮助(GETTING MORE HELP)

--------------------------------------------------------------

**

在本教程里我们试着为你开始使用Emacs提供了足够多的信息。但是有关Emacs的信息实在是太多以至于不能全部都在这里说明。但是,你 还应该学习更多有关Emacs的东西,因为它另外还有很多有用的特性。Emacs提供了很多读取有关命令的文档的命令。这些“帮助”命令都以 Control-h开头,叫做“帮助字符”。

为了使用帮助特性,输入字符C-h,然后再输入一个字符来说明你需要哪种帮助。如果你真的不知道,输入C-h ? 然后 Emacs会告诉你它能给你什么样的帮助。如果你输入了C-h 又觉得不需要任何帮助,你可以用C-g来取消它。

(在有的地方,C-h的作用被改变了。如果按C-h在屏幕的底部没有出现有关帮助的信息的话,试试用F1和M-x help RET来代替。)

最基本的帮助特性是C-h c。输入C-h,然后是字符 c,然后输入一个命令字符和序列;然后 Emacs 会显示这个命令的简洁的描述。

>> 输入 C-h c Control-p.

显示的消息看起来会象这样:

C-p runs the command previous-line

这告诉你“功能的名字”。功能的名字主要用于对Emacs的功能扩充和定制。但因为功能的名字指出了命令的用途,所以最好不要改动它。

C-h c后面可跟多字符命令,比如 C-x C-s 和 (如果你没有 META 或者 EDIT 或者 ALT 键) v 。

要获取有关命令的更多信息,用C-h k 代替 C-h c。

>> 输入 C-h k Control-p.

这将在一个Emacs窗口里显示命令的文档。当你读完后可以用C-x 1除去帮助文本。如果不想马上离开,你可以一边编辑一边参考帮助文本,然后再按C-x 1。

这是一些有用的 C-h 选项:

C-h f     描述一个功能,在你输入了这个功能的名字后。

>> 输入 C-h f previous-line。 将打印出C-p命令所实现的所有功能。

C-h a     命令查找。输入一个关键字,Emacs将列出所有名字里有这个关键字的命令。 包括所有以Meta-x开始的命令。对有些命令,C-h a 也将列出实现同一功能的 几个命令序列。

>> 输入 C-h a file.

这将在窗口里显示所有名字里有单词“file”的M-x命令。

>> 输入 C-M-v 来滚动帮助窗口,做上几次。

>> 输入 C-x 1 来删除帮助窗口。

Emacs 启动:

直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本,

就用 emacs -nw      (No windows)起动.

符号说明

C-X 表示按住CTRL键, 然後按X, 再把CTRL, X一起放开.

M-X         META                 META

在没有META键的电脑上, M-X 等於先按 ESC键, 接著按 X键.

Sun上面META键就是菱形的那个键.

有些系统META键就是ALT键.(或者某一边的ALT键)

C-X或 M-X的X没有大小写分别.

Emacs按键命令基本上是一串C-和M-组成的.

超过两个以上的按键命令, Emacs会在萤幕最下面一行显示你按过什麽.

这一行叫作mini buffer

结束Emacs按 C-x C-c

取消执行 C-g

有些Emacs命令会跑很久, 可以用C-g中断之. 按错键也可以按C-g取消.

上下移动   C-p 向上 (previous line) C-n向下(next line)

左右移动   C-f 向右 (forward) C-b 向左 (backward)

其实Emacs内部没有行的概念, 把一篇文章放在一个大buffer

里面, 所以C-f (forward)就是向档尾移动, C-b (backward)

是移回去的意思, 一次一个字.

翻页  下一页 C-v (view next screen)

上一页 M-v

翻页时,上一页末尾会留一点在萤幕最上面,以维持连续性.

Emacs在游标接近萤幕最下方时会自动跳半页, 把档案往前挪一点,

方便阅读.

重画萤幕 C-L

Emacs里面游标的专有名词叫point. point == 游标目前的 点

游标一次跳一个字(word) M-f  往後跳 M-b

注意 C-f 与 M-f, C-b 与 M-b的对称性.

移到行头 C-a  行尾 C-e

移到句首 M-a  到句尾 M-e

(M-a 到上一个句点後面,一个句子的起头.

M-e 到句点後面)

移到档头 M-< 档尾 M->

删除游标目前指的/後面的字 C-d

前面的字 DEL  (Delete键)

DEL的正名叫Rubout (Rub out)

M-DEL 往回删一个字(word)

M-d   往前删 (游标後面)

C-k   删至行尾 (kill)

M-k   删到一句子结尾(删到句点) (kill)

注意Backspace = C-h 在Emacs下是help的意思

後面有(kill)的, 表示此删除的动作是kill, 不太等於delete.

emacs会把kill掉的东西放到kill ring去, 算是一种暂存的地方,

以後可以叫出来.见 yank说明.

Undo: C-x u

C-_ 等於 C-x u    有些DEC终端机, C-/就是C-_

有时等於C-Shift- -

重复执行

举例, 向右移 8个字, C-u 8 C-f

C-u 在Emacs里是蛮特别的,用来设定一些引数(argument/repeat count)

给其後的命令.

C-u 2 0 C-n 向下移 20行

有一个特别的例外, C-u 3 C-v 不是翻三页, 而是整个萤幕向上移三行.

据说这比较有意义.

C-u 1 0 C-x u   UNDO 10次

给C-L一个引数会怎麽样:

C-u 0 C-l 会重画萤幕,并且把目前的行移到萤幕第一行.

另外, C-u 100   等於 M-100

C-u 数字  等於 M-数字

X windows 下,

C-left C-right 一次移一个字(word).

C-up C-down 移动一段 (paragraphs/C语言的话是block)

Home = C-a

End = C-e

C-Home = M-<

C-end = M->

PgUp PgDn = M-v C-v

设定重覆次数更加简单,

比如要向右移10个字 C-1 C-0 right-arrow

就是按住CTRL, 然後打10就对了, 比 C-u 1 0 简单.

Mouse中键用来选取有hi-light的地方.

右键是menu-button

如果不小心按两次ESC, 等於 M-ESC,  会有一个讯息跑出来

说你按到一个被disable的命令. 这是高级指令, 作者认为

初学者用不道,所以会问你要不要启动它, 一般回答no.

如果某一行太长, 萤幕显示不下, Emacs会在萤幕最右边打个$,

表示此行未完,右边还有.

把一行拆成两行: 在想拆处按Enter即可.

合并两行为一行: 在行尾按C-d (或行首按DEL)

Yank: 吐出被删掉的(killed)东西.

只要用kill (C-k, M-k等) 删除, 超过一个字的资料,

emacs就会把它存起来, 然後C-y 可以把它叫出来.

功能跟Cut & Paste一样. Kill 和delete不一样, 只有被

kill掉的东西才能用yank吐回来.

游标在同一地方不动, 连续kill掉的资料会被当成一次kill掉的,

yank时会一起回来.

被Kill掉的资料是放在称作 kill ring的资料结构上面, ring就是个圆圈,

被kill掉的东西会依序摆在圆圈上. yank 会放回最近一次kill掉的资料.

如果不是你想要的话, 用M-y 可以换.  (M-y就是告诉emacs, 不对不对,

我不是要这一个,换前一个给我).

M-y 要紧接在C-y之後.

拷贝文字的方法== 连续 C-k 几次,  把要拷贝的行全部删掉,

然後按 C-y 弄回来. 再到想复制的地方按一次C-y, 就成了.

把要拷贝的资料kill掉在yank回来好像很笨. 是有比较文明的

方法, 那就是M-w, 不过较麻烦.

首先,要先设标记. Mark 用 C-SPC 或 C-@ 设. 然候

把游标移到另一端, 按 M-w 就可以把 mark 到 point间的

字存到kill ring上. point 就是游标的意思.

Emacs不会把Mark起来的地方用highlight表示, 除非在X下.

在X下, 可以用M-w 来拷贝用滑鼠反白的文字.

kill & yank 就是 cut & paste的意思.

以上大部份指令对Bash的命令列编辑也有效

档案操作

读档: Emacs术语叫 finding a file.

C-x C-f 然後在mini-buffer输入档名. 输入档名时, SPC键有

auto-complete的功能,或者会秀出到目前为止档名前几

个字和输入一样的. (TAB键也有类似功能)

C-x C-f 叫 find-file

C-x C-s 存档 (save current file, save current buffer)

C-x s   存所有的档

C-x i   插入档案  把另外的档案的内容读入目前编辑区内

视窗

Emacs把档案读进来,存在buffer中.

我们透过window来看/编辑buffer.

两个视窗会把萤幕切成两部份, 他们可以同时显示

相同的, 或不同的档案.

对初学者而言, 最需要的是记住怎样让不想要的视窗消失:

C-x 0 关掉目前的视窗

C-x 1 会让目前的视窗占满整个萤幕 (One Window),

取消/关掉其他的视窗.

Emacs里面有许多功能都会开一个小视窗来和使用者沟通, 显示讯息.

有时候不会自动消失很讨厌, C-x 1 就很有用.

另一个功能是如何跳到另一个视窗.

C-x o  (other-window)

C-x 2 把目前的视窗切成两个 (水平分割)

C-x 3                      (垂直分割)

C-x 4 是一串与视窗有关的指令.

C-x 4 是一串与视窗有关的指令.

C-x 5 则是扩展到X的视窗, 称为frame.

C-x 5 2 就是再开另一个X视窗 (frame).

多档编辑

C-x C-b 看目前有那些buffer (buffer就是emacs放开起的档案的地方).

C-x b 然後在minibuffer输入buffer的名字,可以切换编辑buffer.

TAB键也有作用. 有些内部的buffer (就是没有档案的buffer),

是用*开头和结束, 这个也要打, 如*scratch*

最候提醒:

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

有效

档案操作

读档: Emacs术语叫 finding a file.

C-x C-f 然後在mini-buffer输入档名. 输入档名时, SPC键有

auto-complete的功能,或者会秀出到目前为止档名前几

个字和输入一样的. (TAB键也有类似功能)

C-x C-f 叫 find-file

C-x C-s 存档 (save current file, save current buffer)

C-x s   存所有的档

C-x i   插入档案  把另外的档案的内容读入目前编辑区内

视窗

Emacs把档案读进来,存在buffer中.

我们透过window来看/编辑buffer.

两个视窗会把萤幕切成两部份, 他们可以同时显示

相同的, 或不同的档案.

对初学者而言, 最需要的是记住怎样让不想要的视窗消失:

C-x 0 关掉目前的视窗

C-x 1 会让目前的视窗占满整个萤幕 (One Window),

取消/关掉其他的视窗.

Emacs里面有许多功能都会开一个小视窗来和使用者沟通, 显示讯息.

有时候不会自动消失很讨厌, C-x 1 就很有用.

另一个功能是如何跳到另一个视窗.

C-x o  (other-window)

C-x 2 把目前的视窗切成两个 (水平分割)

C-x 3                      (垂直分割)

C-x 4 是一串与视窗有关的指令.

C-x 4 是一串与视窗有关的指令.

C-x 5 则是扩展到X的视窗, 称为frame.

C-x 5 2 就是再开另一个X视窗 (frame).

多档编辑

C-x C-b 看目前有那些buffer (buffer就是emacs放开起的档案的地方).

C-x b 然後在minibuffer输入buffer的名字,可以切换编辑buffer.

TAB键也有作用. 有些内部的buffer (就是没有档案的buffer),

是用*开头和结束, 这个也要打, 如*scratch*

最候提醒:

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

[外链图片转存中…(img-AJOOjc5k-1714120378687)]

[外链图片转存中…(img-1s0u8snw-1714120378688)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值