您的位置:首页 > 其它

Emacs自带教程的学习笔记

2017-04-13 14:41 288 查看
本篇文章是由学习
GNU Emacs 24.5.1 (i686-pc-mingw32)
版本自带的帮助教程而来.

Emacs Tutorial

查看原文档的方式是: 打开Emacs,
M-x help-with-tutorial
回车即可,
M-x
意味着”Alt + x”(M - ALT / META / EDIT / ESC)

1. 光标的切换

C - p

C - b       C - l       C - f

​            C - n


这几个快捷键涵盖了Emacs里面光标位置的控制,请注意
C - l
是L而不是1. 自上而下自左而右的顺序分别是上一行(Previous), 回退( Backword), 按光标位置将画面置中, 前进(Forward), 下一行(Next).

因为双手位于主键盘区域的操控,比将右手移至方向键区域来控制光标要来的舒适的多.

如果觉得一个字符一个字符移动还是太慢,可以尝试

M - f
/
M - b


它们是按照一个词语一个词语往前/后跳跃(这里的词指代英文,中文则是以标点符号作为判断点)

观察
C - f / C - b
M - f / M - b
之间的类比关系,可以知晓:

META系列的组合键通常操作的是由语言定义的单位(词,句子,段落)

CONTROL系列则是与语言无关的基本单位(字符,行)

同样的有
C - a / C - e
移动光标到行头/尾,
M - a / M - e
请自己思考并尝试一下.

M - < / M - >
用来移动到所有文字的头/尾.

之所以推荐使用这样的快捷键组合而不是使用方向键, 是基于下述的原因:

它们在任何键盘上都能用

当你熟练使用 Emacs 之后,你会发现用这些组合键比用方向键要快得多,因为你的手不需要离开打字区

一旦你习惯了使用这些组合键,你也可以很容易地适应其它更高级的光标移动命令。

操纵光标的基本命令集合如下:

C-f 向右移动一个字符

C-b 向左移动一个字符

M-f 向右移动一个词【对中文是移动到下一个标点符号】

M-b 向左移动一个词【对中文是移动到上一个标点符号】

C-n 移动到下一行

C-p 移动到上一行

C-a 移动到行首

C-e 移动到行尾

C-l 调整屏幕按光标位置置中

M-a 移动到句首

M-e 移动到句尾

M-< 移动到全文首

M-> 移动到全文尾

2.数字参数

作用是用来指定一个命令的重复次数, 比如:

C - u 3 C - p
就是将移到上一行的指令进行3次.

3.安全终止

如果Emacs对你的命令失去了响应,用
C-g
来安全终止.同样这个可以用于终止数字参数.

4.那些被”封印”的命令

处于安全考虑,有些命令是被”禁用”的,防止初学者在不了解的情况下误用导致麻烦.

如果敲击了这类命令,会出现一个提示窗格,告诉你这个命令是做什么的并询问你是否确认要使用这个命令.

使用空格来确认,
n
来拒绝


5.窗格(WINDOWS)

C-x 2或3
可以发现窗格被分为上下或是左右两部分

C-x o
可以让光标在不同的窗格里面切换,在不同的窗格中再次敲击分隔指令可以看到被再次分隔

C-x 1
用以将光标所在的窗格最大化并关闭其他窗格

6.插入与删除

<DEL>        删除光标前的一个字符
C-d          删除光标后的一个字符

M-<DEL>      移除光标前的一个词
M-d          移除光标后的一个词

C-k          移除从光标到“行尾”间的字符
M-k          移除从光标到“句尾”间的字符


上面所示的
<DEL>
在大部分键盘上指代的是退格符,即”Backspace”

“删除”(delete)和”移除”(kill)之间确实是存在区别的,移除类似于剪切,可以通过
C-y
(yank)来召回(类似于粘贴),但是删除的话就是清除不保留记录了(当然也可以通过撤销命令来找回)

C-<SPC>
可以用来高亮选择部分(中文输入法的该按键会被识别为切换中英文,可以采用
C-@
来代替),
C-w
来移除高亮部分

一个有趣的地方是,如果你在一行的开头按两次
C-k
,会发现第一次移除了该行,第二次移除了该行的换行符并使后续内容整体上移一行. 但是
C-k
对于数字参数的处理是特别的,如果你使用了
C-u 2 C-k
,会发现直接移除了两行,而不是输入两次
C-k
那样的效果.

7.召回

C-y
是召回你最后一次移除的内容,注意是最后一次.那怎么召回再前一次的移除的内容呢?只需要在
C-y
之后继续按
M-y
,可以多次按,就会一直返回更上一次移除的内容了.

移除一行,移动一下光标,然后再移除另外一行。

按 C-y 将第二次移除的那行召回来。

紧接着再按 M-y,它将会被第一次移除的那行取代。

试着再按几下 M-y 看看会发生什么。

再继续,直到第二行被召回来,然后再做个几次。

如果感兴趣,你可以试着给 M-y 指定一个正的或负的参数。

8.撤销(UNDO)

终于到了最激动人心的命令!!! 撤销

世上没有后悔药可以卖,但是编辑器往往都会有撤销这个美妙的功能,来弥补愚蠢的人类经常犯下的错误,让一切恢复原样.

C-/


但是撤销命令也有几个例外:

没有改变文字的命令不算(比如移动光标和滚动命令)

在键盘输入的字符以组为单位—每组最多20个字符—来进行处理,这是为了减少在撤销”插入文字”动作时所需要的操作次数

C-_
C-x u
这两个和
C-/
的作用是一样的,只是按起来比较麻烦(有些终端上面的
C-/
其实是发送
C-_
)

数字参数对于撤销来说就是进行几次的意义.

9.文件 (FILE)

Emacs只有在保存的时候才会对文件进行修改,同时会将存盘前的文件进行重命名保存,以免愚蠢的人类修改完之后又想反悔.

在Emacs编辑器的下方可以看到一条灰色的状态栏,比如正在看教程指引文件的你会看到的是”-:— TUTORIAL.cn”的文字, 这代表了你正在访问的文件.

C-x C-f
,该项指令用来寻找一个文件. 它需要一个参数,就是文件名.

输入过程中的字符会出现在屏幕最底栏,这里称为小缓冲 (minibuffer).在这里你可以使用Emacs编辑命令来编辑文件名.

C-x C-s
,该项指令用来存储文件.对原文件的重命名保存方式通常是在文件名末尾加一个”~”符号来加以区分.

如果对你来说这是个烦人的特性,可以这样来关闭它:

M-x customize-variable <Return> make-backup-files <Return>


(
<Return>
意味着回车按键…)

不但可以寻找一个已有文件,还可以输入一个不存在的文件名,这也是Emacs**创建新文件**的方法.事实上,只有在存盘的时候才会真正创建该新文件.

10.缓冲区(BUFFER)

多次用
C-x C-f
可以打开一个又一个文件,但是上一次打开的文件并非被关闭了. Emacs将每一个编辑的文件都保存在一个称谓”缓冲区”(buffer)的地方,用以下命令可以打开缓冲区列表:

C-x C-b


固然可以用
C-x C-f
再次打开之前的文件,但是更好的是可以通过
C-x b
来切换至曾经打开过文件的缓冲区.

如果在一个A文件中修改后,切换到另一个B文件,那么A文件还是存在于缓冲区中,并没有存盘.可以通过
C-x b
切换过去再
C-x C-s
来存盘,但是这样太麻烦了.我们有更简便的方式来完成:

C-x s
保存多个缓冲区

这会找到所有未保存的缓冲区并向你逐个询问.

11.命令集扩展(EXTENDING THE COMMAND SET)

Emacs的命令数不胜数,故使用了扩展(eXtend)命令来解决这个问题,它有两种风格:

C-x
字符扩展, C-x 之后输入另一个字符或者组合键

M-x
命令名扩展, M-x 之后输入另一个命令名

上面学过的寻找文件/保存文件/退出Emacs的命令都是属于第一者.

图形界面可以轻松地切换多个任务窗口,但如果是一些比如只能显示一个应用程序的文本终端时,你需要将Emacs”挂起”来切换至别的应用程序

C-z
来暂时离开Emacs. 它回到Shell但不会杀死Emacs. 通常可以用
fg
或者
%emacs
再次回到Emacs.

C-x C-f         寻找文件。
C-x C-s         保存文件。
C-x C-b         列出缓冲区。
C-x C-c         离开 Emacs。
C-x 1           关掉其它所有窗格,只保留一个。
C-x u           撤销。


第二者的命令名扩展的方式不常用,通常作用于部分模式下,比如:

replace-string(字符串替换)这个命令,会将一个字符串替换成另一个.

M-x
之后,屏幕底部会等待你输入命令名,可以通过
repl s<TAB>
来帮你快速输入这个命令.

这个命令需要两个参数,被替换的字符串和替换它的字符串.

这会将光标之后的所有对应字符串进行替换.

12.自动保存(AUTO SAVE)

自动保存的文件名通常会在头尾各加一个”#”,并会在正常存盘后删除.

如果不幸发生时,请轻松地打开原来的文件(不是自动保存文件),然后键入:

M-x recover file <Return>


来恢复自动保存文件.(提示时输入yes)

13.回显区(ECHO AREA)

如果 Emacs 发现你输入多字符命令的节奏很慢,它会在窗格的下方称为“回显区”的地方给你提示。回显区位于屏幕的最下面一行。

14.状态栏(MODE LINE)

回显区上面灰色的一条即为状态栏.显示了Emacs的状态和正在编辑文字的一些信息.

-:**- TUTORIAL.cn 63% L749 (Fundamental)

63% — 表示光标在全文中的位置, 如果是在开头则会是 –TOP–, 末尾则是 –Bot–, 如果文件很小一屏足以展示, 则会是 –ALL–

L749 — 给出了光标所在的行号

最开头的 ** 号表示该文件被改动过, 如果是刚打开的文件是 –

(Fundamental) — 表示现在正在使用的编辑模式,缺省就是 Fundamental, 这是一种”主模式”. 在Emacs里面主模式林林总总, Lisp模式(用来编辑程序代码), Text模式(用来编辑各种自然语言文本的).

M-x fundamental-mode
就可以切换模式, 输入不同模式的名字即可

应该已经发现了,自动补全功能就是或 :)

C-h m
可以查看当前主模式的文档(可以试着查看Fundamental和Text模式的文档)

主模式之所以叫”主”(major), 因为还有”辅模式”(minor mode)的存在. 辅模式是独立存在,独立开关的. 所以你可以不用辅模式, 用一个辅模式, 或者是同时用多个辅模式.

辅模式在你查看主模式文档的一开始就有列出, 细心的人应该已经发现了.

M-x auto-fill-mode
可以开启一个自动折行的辅模式,在输入一次则是关闭.

C-u 20 C-x f
可以将自动折行的行边界字数(英文)改为20(默认是70)

M-q
手动换行, 如果在段落中间进行修改, 自动折行不会生效, 需要手动一下

15.搜索(SEARCHING)

Emacs可以搜索字符串, 以”渐进”(incremental)的形式, 即搜索和输入是同时进行的.

C-s / C-r
分别是向前/后搜索. 敲击命令后可以观察到主模式显示区域的改变.

撤销命令会回到开始搜索的地方, 而
<Return>
则会停留在搜索结果上.

16.多窗格(MULTIPLE WINDOWS)

这正是Emacs众多迷人之处的其中之一.

C-l
多次输入会有三种不一样的功能

C-x 2
可以看到多出一个窗格, 这里用
C-M-v
可以让下面的窗格下翻页(光标还停留在上窗格,
C-M-S-v
则是上翻页) (翻译和校对就很适合使用这样的功能)

C-x o
可以切换光标位置. o指的是other

对另外窗格翻页的操作, 如果你没有META键, 用ESC键替代的时候就需要注意按键顺序了, 必须先输入ESC, 再是C-v. 否则 C-ESC-v 这样的操作是没用的. (因为ESC本身是一个字符键, 而非C或M这样的修饰键(modifier key)

C-x 4 C-f
可以在新窗格里打开文件.

17.多窗口(MULTIPLE FRAMES)

M-x make-frame
可以显示一个新的窗口(而非窗格)

M-x delete-frame
用来关闭当前的窗口

18.递归编辑(RECURSIVE EDITING LEVELS)

比如看到主模式是 [(Fundamental)] 而非 (Fundamental), 那多半是因为进入了递归编辑.

ESC ESC ESC
来解除你的尴尬.

C-g
只能用于取消”本层递归编辑之内”的命令和参数(arguments)

19.获得更多帮助(GETTING MORE HELP)

C-h ?
?代表了一个字符, 用以说明你需要什么帮助, 如果你连自己需要啥都不晓得, 输入
?
也是可以的. (如果这个无效, 可以试试
F1
或者
M-x help <Return>


最基本的一个帮助功能:

C-h c 组合键
可以给出该组合键命令的简要说明. 比如 C-h c C-p

​ C-p runs the command previous-line

​ 这里显示了C-p对应的函数名, 即 previous-line

若是简要说明不能满足欲求不满的你(笑), 试试用
C-h k
来替代
C-h c


C-h f 函数名
用以解释一个函数 (e.g.,
C-h f previous-line <Return>
)

C-h v 变量名
用以显示变量的文档

C-h a 关键词
用以根据关键词列出所有相关的命令, 这些命令都可以用
M-x
来调用. (e.g.,
C-h a file
)

C-h i
阅读手册, 只有你想不到(笑)

20.更多精彩(MORE FEATURES)

想学习更多的使用技巧,Emacs 使用手册(manual)值得一读。你可以读纸版的书,也可以在 Emacs 中读(可以从 Help 菜单进入或者按 C-h r)。提两个你可能会很感兴趣的功能吧,一个是可以帮你少敲键盘的 completion(自动补全),另一个是方便文件处理的 dired(目录编辑)。

Completion 可以替你节省不必要的键盘输入。比如说你想切换到 Message 缓冲区,你就可以用 C-x b *M 来完成。只要 Emacs 能够根据你已经输入的文字确定你想要输入的内容,它就会自动帮你补齐。Completion 也可用于命令名和文件名。有关 Completion 的详细说明可以在 Emacs Info 中的“Completion”一节里找到。

Dired 能够在一个缓冲区里列出一个目录下的所有文件(可以选择是否也列出子目录),然后你可以在这个文件列表上完成对文件的移动、访问、重命名或删除等等操作。Dired 也在 Emacs 使用手册中有详细介绍,参见“Dired”一节。

Emacs 使用手册里还有许许多多的精彩功能等着你来了解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编辑器 Emacs Tutorial