Emacs自带教程的学习笔记

本篇文章是由学习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 - bM - f / M - b之间的类比关系,可以知晓:

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

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

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

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

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

  1. 它们在任何键盘上都能用
  2. 当你熟练使用 Emacs 之后,你会发现用这些组合键比用方向键要快得多,因为你的手不需要离开打字区
  3. 一旦你习惯了使用这些组合键,你也可以很容易地适应其它更高级的光标移动命令。

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

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 使用手册里还有许许多多的精彩功能等着你来了解。


  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值