所有内容都抄录自 Emacs 官方指导文档

简单操作

C-x C-c 退出软件 C-g 退出正在运行的软件

C-v 查看下一屏文字 M-v 上一屏 C-l 重绘屏幕,并将光标所在行置于屏幕的中央,再按到顶,再按到底

C-previous 上一行 C-next 下一行 C-backward 回退 C-forward 前进

M-f 移动到下一个英文单词,中文是移动到下一个标点符号 M-b 前移

C-a 光标移动到一行的头部 C-e 一行的尾部 不会跳行 M-a M-e 句子首尾

M-< 文档最开始 M->文档末尾

C-u 8 C-f //C-u后是前缀参数,参数后是要重复执行的命令 也有特例,他们将数字参数另作它用,有些命令仅仅将前缀参数作为 一个标志,只要给出有一个前缀参数,不管其值为何,他都会改变 命令的功能 C-v 和 M-v ,给定一个参数时,它将滚动你指定的“行数”,而不是 “屏数”。

C-g 取消数字参数 和 指数到一半的命令

C-x 1 只保留一个窗格 C-x 相关的命令,一般都和“窗格、文件、缓冲区”相关

enter 键, 会自动根据环境补一些空格 C-u 88 * 输入88个* C-u 88 [backspace] 删除88个*

[DEL] 删除光标前的一个字符 C-d 删除光标后的一个字符

M-[DEL] 移除光标前的一个词 M-d 移除光标后的一个词

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

C-[spc]/@ 移动位置,再输入 C-w ,之间的文字会被删除 C-y yanking 召回前一次移除(对应移除),其他编辑器叫 剪切粘贴 C-k 的连续几句,会在一次都召回

M-y 召回前几次移除的内容

C-/ 撤销 undo C-_ 也是撤销命令;它的作用跟 C-/ 一样,但是它比较容易多次输入。在 某些终端上,输入 C-/ 实际上向 Emacs 发送的是 C-_ 。 另外, C-x u 和 C-/ 完全一样,但是按起来有些麻烦。

数字参数对于 C-/ 、 C-_ 和 C-x u 的意义是执行撤销的重复次数

C-x C-f 寻找一个文件,C-g 取消。 C-x C-s 存储这个文件。第一次存盘的时候 Emacs 会将原文 件重命名以备份。重命名的规则通常是在原文件名之后添加一个“~”字符。 【对许多人来说,这是一个烦人的特性,关掉文件备份可以用如下命令: M-x customize-variable [Return] make-backup-files [Return]】

C-x C-f 找不到就会新建,只有存盘的时候 Emacs 才会真正创建这个文件

切回上一个文件:再用一次 C-x C-f C-x b 但是必须输入缓冲区的名称

C-x C-b 列出缓冲区 “Messages”缓冲区也没有对应文件,这个缓冲区里存放的都是在 Emacs 底部 出现的消息。

C-x s 保存多个缓冲区

命令集扩展

C-x 字符扩展。 C-x 之后输入另一个字符或者组合键。 M-x 命令名扩展。M-x 之后输入一个命令名。

    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 之后,Emacs 会在屏幕底端向你询问并等待你输入命令名。如果你想 输入“replace-string”,其实只需要敲“repl s[TAB]”就行了,Emacs 会帮你自 动补齐。输入完之后按 [Return] 提交。

字符串替换命令需要两个参数――被替换的字符串和用来替换它的字符串。每个 参数的输入都以换行符来结束。

光标之后的范围内,该词已经被替换掉了******

对于只能显示一个程序的终端,需要挂起 C-z 回到 shell 但不杀死 Emacs 的进程 fg 或是 emacs 命令,再次回到 eamcs 中

自动保存文件叫:#[文件名]#,它会在正常保存后被删除 不幸发生时,可以打开原文件(而不是自动保存文件) 输入:M-x recover f le [return]来恢复自动保存文件,提示确认时输入yes[Enter]

  • 回显区(ECHO AREA)

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

状态栏

-:**- TUTOR AL.cn 63% L749 (Fundamental)

状态栏显示了 Emacs 的状态和你正在编辑的文字的一些信息。

你应该知道文件名的意思吧?就是你找到的那个文件嘛。-NN%– 显示的是光标在 全文中的位置。如果位于文件的开头,那么就显示 –Top– 而不是 –00%–;如 果位于文件的末尾,就显示 –Bot–。如果文件很小,一屏就足以显示全部内容, 那么状态栏会显示 –All–。 “L” 和其后的数字给出了光标所在行的行号。

最开头的星号(*)表示你已经对文字做过改动。刚刚打开的文件肯定没有被改动 过,所以状态栏上显示的不是星号而是短线(-)。

状态栏上小括号里的内容告诉你当前正在使用的编辑模式。缺省的模式是 Fundamental,就是你现在正在使用的这个。它是一种“主模式”。

Emacs 的主模式林林总总。有用来编辑程序代码的――比如 L sp 模式;也有用 来编辑各种自然语言文本的――比如 Text 模式。任何情况下只能应用一个主模 式,其名称会显示在状态栏上,也就是现在显示“Fundamental”的地方。

主模式通常会改变一些命令的行为。比方说,不管编辑什么语言的程序代码,你 都可以用一个相同的命令来添加注释。但是在不同的语言中注释的语法往往是不 同的,这时不同的主模式就会用各自不同的语法规则来添加注释。主模式都是可 以用 M-x 启动的扩展命令,M-x fundamental-mode 就可以切换到 Fundamental 模式。

用 C-h m 可以查看当前主模式的文档。

自动换行辅助模式:M-x auto-fill-mode [Return]“tab会补全命令” 行边界通常被设定为 70 个字符【这里指英文字符】,你可以用 C-x f 命令配合 数字参数来重新设定它

输入 C-x f 并传递参数 20: C-u 2 0 C-x f。 然后输入一些文字,观察 Emacs 的自动折行动作 最后再用 C-x f 将边界设回 70。

如果你在段落的中间做了一些修改,那么自动折行模式不会替你把整个段落重新 折行,你需要用 M-q 手动折行。注意,光标必须位于你需要折行的那一段里。

移动光标到前一段中,然后输入 M-q。

搜索

C-s 向前进搜索,C-r 向后退搜索 在渐进式搜索中,按 [DEL] 会“撤回”到最近一次搜索的命中位置。如果之前没 有一个命中, [DEL] 会抹去搜索字符串中的最后一个字符 enter 会让光标留在搜索结果上,但C-g 会回到搜索开始的位置

另外,如果你在搜索的时候输入了 control 或者 meta 组合键的话,搜索可能会 结束。(也有例外,比如 C-s 和 C-r 这些用于搜索的命令。

多窗格

C-l C-l C-x 2 C-M-v 滚动下方的窗格(先按哪个都可以的 或是先输入[Esc],再输入C-v,因为[Esc]不是修饰键,而是一个字符键 C-M-S-v 向上滚动 C-x o 将光标转移到下方的窗格 在下方的窗格中,用 C-v M-v 来滚动

C-x 4 C-f 紧跟着输入一个文件名,就会在下面打开一个文件,光标也过去了

***********多窗口 M-x make frame M-x delete frame

  • 递归编辑(RECURS VE ED T NG LEVELS)

有时候你会进入所谓的“递归编辑”。递归编辑状态由位于状态栏的方括号所指 示,其中包含了用小括号来指明的模式名称。比如说,你有时可能会看到 [(Fundamental)],而不是 (Fundamental)。【比如在用 M-% 进行交互式替换的 时候你又用了 C-s 进行搜索,这时替换模式并没有结束,但你又进入了搜索模式, 这就是所谓的递归编辑。】

离开递归编辑可以用 ESC ESC ESC。这是一个最通用的“离开”命令,你甚至可 以使用它来关掉多余的窗格,或者离开小缓冲。

输入 M-x 进入小缓冲;然后输入 ESC ESC ESC 离开。

你不能用 C-g 退出递归编辑,因为 C-g 的作用是取消“本层递归编辑之内”的 命令和其参数(arguments)。