简单易懂的GNU Emacs安装教程:世界著名的顶级全能文本编辑器

本文最后更新于 2024年2月16日 下午

前言

《简单易懂的GNU Emacs安装教程》这篇文章是 rsreland ( https://rsreland.net )于 2015年1月31日 编写,对应 GNU Emacs 最新的 24.4 版本(也可能适用以上版本),和 Windows 操作系统。(请注意本文的编写时间,及软件版本,来判断本文是否还有效。)

本文是一篇图片为主的软件教程,主要讲述如何下载 GNU Emacs ,以及怎样安装。之后还会说明配置、启动的方法,最后会列出一些使用技巧。

编写本文的原因始于我的一个观点:图片可以比文字传达更多的信息,也能让其他人更容易理解作者的意图及思想。所以希望这篇文章可以让你,轻松的了解 GNU Emacs 的下载、安装及使用。

 

 

什么是GNU Emacs

GNU Emacs 中的 Emacs 是英文 Editor Macros 的字母缩写,意思为 宏编辑器 ,是一个文本编辑器家族,拥有着众多分支,其共同点都是无限制的可扩展性。而 GNU Emacs 中的 GNU 则表明了它是 GNU 计划中的一个子项目,所以 GNU Emacs 的意思就是:它是 GNU 版的 Emacs 文本编辑器。

 

 

为什么使用GNU Emacs

  1. GNU Emacs 是开源软件,你可以免费使用。
  2. GNU Emacs 拥有无限制的可扩展性。
  3. GNU Emacs 的全部操作都可以在键盘上完成,适合编辑大量的文本。

GNU Emacs 既然是 GNU 的一个项目,理所当然的是一个开源软件,你可以很方便的获得它的源代码,进行修改。

GNU Emacs 还是一个可以高度定制的软件,可以使用专门的扩展语言 Emacs Lisp ,给 GNU Emacs 添加任何功能。例如你编写了一个煮咖啡的 GNU Emacs 扩展程序,并将它与一台咖啡机链接,这时你就可以在用 GNU Emacs 编辑文本的同时,顺手敲了指定的组合命令,让咖啡机自动开始煮咖啡了。

GNU Emacs 与普通的文本编辑器相比最大的优点是:可以不使用鼠标,所有的操作均在键盘上敲击快捷命令完成。这样的设计,对于编辑文字会很方便,双手不用离开键盘去操作鼠标,就可以完成所有操作,这节省了很多时间和额外的手部动作。

GNU Emacs 比起文本编辑器,更像一个操作系统,它本身就自带浏览网页、收发邮件、小游戏等各种各样的功能。本质就是一个平台,只要使用 Emacs Lisp 编写插件,就可以为其添加各种各样的功能,甚至是和文本编辑根本没有关系的功能。

 

 

GNU Emacs适合做什么

GNU Emacs 最适合的当然是编写代码。

 

 

下载和安装GNU Emacs

在开始安装之前,请先确认你满足以下几个条件。

  1. 你的电脑已经连接到网络。
  2. 你的电脑硬盘有170MB的剩余空间。
  3. 你现在有充足的时间。(安装包是48M,下载时间受你当前网速的影响。)

如果你确认,你满足了上述条件,那么就可以开始安装 GNU Emacs 了。

注意:教程中的图片都是实际安装时的原比例截图,如果你看不清图片中的提示语,可以将图片放大,不会影响清晰度。具体做法是点击图片,将会进入到图片的展示页面,在展示图片的左下角,有一个叫“原图”的链接,点击它即可。如果前面的方法失效,您仍然可以通过浏览器放大页面的功能,放大图片,例如在 Chrome 浏览器下,您可以按住 Ctrl 键,然后滚动鼠标滚轮,即可放大页面。

 

GNU Emacs官方网站的首页

GNU Emacs 的官方网站地址是:https://www.gnu.org/software/emacs 。通过地址到达 GNU Emacs 的首页,我们现在想要下载 GNU Emacs ,于是在首页上找到 Obtaining/Downloading GNU Emacs 这个大标题,如上图所示,它在整个首页的中间部分,从上数是第3个大标题。

在这个大标题下有一段话,其中包含了3个链接,分别是 nearby GNU mirror 、 GNU mirrors 、 main GNU ftp 。其中 nearby GNU mirror 和 main GNU ftp 是可以进入下载页面,区别在于 nearby GNU mirror 会选择进入离你最近的镜像服务器,因此访问速度和下载速度较快。而 main GNU ftp 则会直接进入官方的服务器,虽然速度无法保证,但其内容绝对是最新的。

nearby GNU mirror 、 main GNU ftp 这2个链接,只要任选一个点击进入即可。(因为镜像站点页面各不相同,为了内容统一,我选择了官方的 main GNU ftp 。)

 

GNU Emacs下载服务器的FTP文件列表

这个页面就是点击 main GNU ftp 链接进入下载服务器后的ftp文件列表,这里列出了适用于 Linux 操作系统的 GNU Emacs 最新版本和过往的历史版本的下载链接,选择自己想下载的版本后,单击对应的链接即可开始下载。

适用于 Windows 操作系统的 GNU Emacs 则在另一个ftp文件列表中,如上图所示,在列表的第1行,有一个 windows/ 链接,单击它就可以转到 Windows 版的 GNU Emacs 的ftp文件下载列表。

 

Windows版GNU Emacs的ftp文件列表

这个页面就是存放 Windows 版 GNU Emacs 的ftp文件列表,如上图所示,这里同样列出了 GNU Emacs 的最新版本和过往的历史版本。

在本文编写完成之时,最新版本是 24.4 版,也就是上图中最下面红框中的 emacs-24.4-bin-i686-pc-mingw32.zip 链接,单击它浏览器即可自动开始下载。

 

GNU Emacs的压缩文件

Windows 版的 GNU Emacs 下载到本地后,如上图所示,是一个zip格式的压缩文件。只要用压缩软件将其解压缩,就可以立刻使用,并不需要安装。

压缩软件可以使用任意一款,因为zip格式是流传非常广的通用压缩格式,任何一款压缩软件都支持,甚至Windows7以上版本,支持直接打开zip格式的压缩文件,就像访问一个文件夹一样自然。但如果你没有安装压缩软件,Windows版本也不支持直接打开,我推荐安装7-Zip压缩软件( https://www.7-zip.org ),因为它是自由软件,不用花钱就可以得到正版授权。

 

GNU Emacs的安装目录结构

虽然 GNU Emacs 解压缩后就可以直接运行了,但为了方便使用,还是要创建一个快捷方式。而我们首先要做的就是进入解压后的 GNU Emacs 目录中,其目录结构如上图所示。

这时我们双击 bin 目录,进入其中。

 

GNU Emacs 的 bin 目录结构

在 bin 目录中我们看到了很多有 exe 后缀名的可执行程序,其中 addpm.exe 就是创建快捷方式的可执行程序,双击运行它,就会在电脑桌面和开始菜单中创建一个 GNU Emacs 的快捷方式。

需要注意,如果只是想直接启动 GNU Emacs,只需要双击运行 runemacs.exe 可执行程序,就可以启动 GNU Emacs 的图形用户界面了。不要运行 emacs.exe 和 emacs-24.4.exe ,它们虽然也可以启动 GNU Emacs 的图形用户界面,但它们是从命令行提示符程序中启动的,这就导致在程序运行期间,命令行提示符这个黑色程序界面会一直存在,非常烦人。

 

创建 GNU Emacs 快捷方式

双击运行 addpm.exe 可执行程序后,会启动命令行提示符程序和弹出一个消息提示框,单击消息提示框中的 确定 按钮,快捷方式就被创建了。

 

GNU Emacs快捷方式

如上图所示,就是创建在桌面的 GNU Emacs 的快捷方式,双击它就可以启动 GNU Emacs 了。

 

启动的GNU Emacs图形用户界面

GNU Emacs 启动后的图形用户界面,如上图所示。但这是设置后的样子,初次使用时还需要进行一些手工配置,详细配置见第五部分。

 

 

设置 GNU Emacs

GNU Emacs配置文件

GNU Emacs 的设置方法和我们在 Windows 下常用的软件有些不同,是在指定文件 .emacs 中通过编写 Emacs Lisp 代码来设置的,这可能让初次接触 GNU Emacs 的人不知所措。所以我会将自己的设置内容放,列在本部分的最下面,供大家参考。

 

配置文件的存储位置

GNU Emacs 的设置文件 .emacs 的位置是:C:\Users<你的用户名>\AppData\Roaming.emacs ,其中<你的用户名>是指安装 Windows 时,系统提示你输入的用户名。

 

创建.emacs文件

因为是初次使用 GNU Emacs ,所以你无法在指定目录下找到 .emacs 文件,这时你可以在指定目录手动创造这个文件,但大部分系统会禁止你创造这种只有后缀名没有文件名的文件。

这时你只要先运行 GNU Emacs ,然后按 Options -> Show/Hide -> Tool-bar -> Save Options 这个顺序依次点击,即可创建出 .emacs 文件。

 

配置文件.emacs创建成功

.emacs 文件创建成功后,GNU Emacs 的最下面会显示一条信息,如上图所示,你也会在这里看到 .emacs 的存储位置。

 

用记事本打开.emacs文件

进入.emacs 文件的存储位置,将它用记事本或任意文本编辑器打开,如上图所示,这时你就可以开始进行配置了。

注意:以英文的分号 ; 为开始的文本行,在 Emacs Lisp 语言里是注释语句的意思,不是代码,只是编写人员对所写代码的解释。

所以上图中的代码,实际等价于下面的2行代码:

1
2
(custom-set-variables ‘(tool-bar-mode nil))
(custom-set-faces)

 

我的.emacs文件

以下是我的设置文件的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
;; ========================================
;; 按键绑定
;; ========================================

;; Alt+s进入Shell,默认命令M-x shell
(global-set-key (kbd "M-s") 'shell)

;; 使用C-x n和C-x p一次跳5行
(global-set-key (kbd "C-x n") (lambda () (interactive) (next-line 5)))
(global-set-key (kbd "C-x p") (lambda () (interactive) (previous-line 5)))

;; C-@ 太难按
(global-set-key (kbd "C-q") 'set-mark-command)



;; ========================================
;; 基础功能设置
;; ========================================

;; 设置光标颜色
(set-face-background 'cursor "red")

;; 在窗口中显示行号
(global-linum-mode 1) ;; 总是显示行号
(setq linum-format " %d -") ;; 行号显示格式

;; 显示光标当前所在的行和列
(column-number-mode t)

;; 显示匹配的括号
(show-paren-mode t)
(setq show-paren-style 'parentheses)

;; 内置的智能自动补全括号
(electric-pair-mode t)

;; 鼠标自动避开光标
(mouse-avoidance-mode 'animate)

;; 在光标靠近顶部或底部2行时就开始滚动,并防止跳屏
(setq scroll-margin 2 scroll-conservatively 10000)

;; 将确定时输入的关键字 yes 和 no 替换为单字母 y 和 n
(fset 'yes-or-no-p 'y-or-n-p)

;; 不生成备份文件
(setq make-backup-files nil)

;; 强制使用空格代替Tab
(setq-default indent-tabs-mode nil)

;; 自动保存 Emacs 桌面(类似历史记录)
;; 第一次使用时,要用 M-x desktop-save 手动选择配置文件的保存地点。
(desktop-save-mode 1)

;; 设置文字显示的行间距
(setq-default line-spacing 5)

;; 直接打开和显示图片
(auto-image-file-mode t)

;; 关闭出错时的提示声
(setq visible-bell t)

;; 默认打开ido
;; c-f返回没有ido模式的找文件模式。
;; c-s或者c-r可以在文件列表中左右移动。
;; [盘符]:/即可转到盘符分区,如:d:/
(ido-mode t)
;; 延迟文件名自动匹配,便于创建同名文件
(setq ido-auto-merge-delay-time 3)



;; ========================================
;; 中文化设置
;; ========================================

;; 设置为中文简体语言环境
(set-language-environment 'Chinese-GB)

;; 设置 emacs 使用 utf-8
(setq locale-coding-system 'utf-8)

;; 设置终端的字符编码
(set-terminal-coding-system 'utf-8)

;; 设置键盘输入时的字符编码
(set-keyboard-coding-system 'utf-8)

(prefer-coding-system 'utf-8)

;; 文件默认保存为utf-8
(setq default-buffer-file-coding-system 'utf-8)

;; 解决 Emacs 文件、目录的中文名乱码
(if (eq system-type 'windows-nt)
(setq file-name-coding-system 'gbk))



;; ========================================
;; 自定义代码
;; ========================================

;; 如果没有标记,则复制光标所在的一整行
(global-set-key "\M-w"
(lambda ()
(interactive)
(if mark-active
(kill-ring-save (region-beginning)
(region-end))
(progn
(kill-ring-save (line-beginning-position)
(line-end-position))
(message "Copied line")))))

;; 如果没有标记,则剪切光标所在的一整行
(global-set-key "\C-w"
(lambda ()
(interactive)
(if mark-active
(kill-region (region-beginning)
(region-end))
(progn
(kill-region (line-beginning-position)
(line-end-position))
(message "Cut line")))))

;; 按F11键将Emacs界面变半透明
(global-set-key [(f11)] 'loop-alpha)
(setq alpha-list '((100 100) (95 65) (85 55) (75 45) (65 35)))
(defun loop-alpha ()
(interactive)
(let ((h (car alpha-list)))
((lambda (a ab)
(set-frame-parameter (selected-frame) 'alpha (list a ab))
(add-to-list 'default-frame-alist (cons 'alpha (list a ab))))
(car h)
(car (cdr h)))
(setq alpha-list (cdr (append alpha-list (list h))))))



;; ========================================
;; 增强插件
;; ========================================
;; 插件默认放在程序根目录的C:\Users\[用户名]\AppData\Roaming\.emacs.d\目录下。


;; undo-tree
;; 下载:https://www.dr-qubit.org/tags/computing-code-emacs.html
;; 功能:增强撤销和恢复,并以树状图显示操作历史。
;; 安装:常规方法,复制到指定目录后编辑配置文件。
;; 使用:C-x u 打开树状图窗口,n、p、f、b则是上下左右移动。
;; 撤销被替换成 C-/ ,恢复则是 C-?
(add-to-list 'load-path "C:/Users/rsreland/AppData/Roaming/.emacs.d/undo-tree")
(require 'undo-tree)
(global-undo-tree-mode)

;; powerline
;; 下载:https://github.com/jonathanchu/emacs-powerline
;; 功能:使mode-line变得更漂亮。
;; 安装:常规方法,复制到指定目录后编辑配置文件。
;; 使用:自动生效。
(add-to-list 'load-path "C:/Users/rsreland/AppData/Roaming/.emacs.d/powerline")
(require 'powerline)
;; 关闭时间显示
(display-time-mode 0)

;; window-numbering
;; 下载:https://github.com/nschum/window-numbering.el
;; 功能:在多个窗口中快速切换。
;; 安装:常规方法,复制到指定目录后编辑配置文件。
;; 使用:每个子窗口都有默认编号,使用 M-[编号] 即可快速切换。
(add-to-list 'load-path "C:/Users/rsreland/AppData/Roaming/.emacs.d/window-numbering")
(require 'window-numbering)
;; 显示窗口编号
(window-numbering-mode 1)

;; Smex
;; 下载:https://github.com/nonsequitur/smex
;; 功能:为M-x快捷键增加候选项功能
;; 安装:常规方法。
;; 使用:自动启动,使用M-x快捷键时,自动提示可选命令。
(add-to-list 'load-path "C:/Users/rsreland/AppData/Roaming/.emacs.d/smex")
(require 'smex)
(smex-initialize)
;; 绑定M-x快捷键
(global-set-key (kbd "M-x") 'smex)
(global-set-key (kbd "M-X") 'smex-major-mode-commands)
;; This is your old M-x.
(global-set-key (kbd "C-c C-c M-x") 'execute-extended-command)



;; ========================================
;; 编程插件
;; ========================================

;; google-set-c-style
;; 下载:https://code.google.com/p/google-styleguide/
;; 功能:提供Google风格的C语言缩进。
;; 安装:常规方法,复制到指定目录后编辑配置文件。
;; 使用:编辑C源码(.c/.h)文件时,自动生效。
(add-to-list 'load-path "C:/Users/rsreland/AppData/Roaming/.emacs.d/google-c-style")
(require 'google-c-style)
(add-hook 'c-mode-common-hook 'google-set-c-style)

;; web-mode
;; 下载:https://web-mode.org
;; 功能:方便web开发。
;; 安装:常规方法,复制到指定目录后编辑配置文件。
;; 使用:编辑源代码文件时,自动运行。
(add-to-list 'load-path "C:/Users/rsreland/AppData/Roaming/.emacs.d/web-mode")
(require 'web-mode)
;; 根据文件后缀名启动模式
;; (add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
;; (add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))

;; elpy
;; 下载地址:https://elpy.readthedocs.io/en/latest/introduction.html#installation
;; 功能:python的开发环境
;; 安装:在.emacs中包含下面3行代码
;; (require 'package)
;; (add-to-list 'package-archives
;; '("elpy" . "https://jorgenschaefer.github.io/packages/"))
;; 之后运行 M-x package-refresh-contents
;; 再运行 M-x package-install RET elpy RET
;; 使用:编辑python源码时自动启动,运行代码 C-c C-c
(package-initialize)
(elpy-enable)

;; yasnippet
;; 下载:https://github.com/capitaomorte/yasnippet (插件)
;; https://github.com/AndreaCrotti/yasnippet-snippets (模板)
;; 功能:根据模板快速输入预设代码段。
;; 安装:需要下载模板,并配置路径。
;; 使用:输入关键字后,按Tab键。
(add-to-list 'load-path "C:/Users/rsreland/AppData/Roaming/.emacs.d/yasnippet")
(require 'yasnippet)
(add-to-list 'yas-snippet-dirs "C:/Users/rsreland/AppData/Roaming/.emacs.d/yasnippet/snippets")
;; 手动快捷键:M-x yas-reload-all
(yas-reload-all)
;; 根据文件模式选择载入
(add-hook 'web-mode-hook #'yas-minor-mode)
(add-hook 'lisp-interaction-mode-hook #'yas-minor-mode)
(add-hook 'c-mode-hook #'yas-minor-mode)
(add-hook 'c++-mode-hook #'yas-minor-mode)
;; 无论何种模式都启用
;; (yas-global-mode 1)


;; auto-complete
;; 下载:https://github.com/auto-complete/auto-complete
;; https://github.com/auto-complete/popup-el
;; 功能:代码自动补全。
;; 安装:首先M-x load-file,再输入etc里instll.el的路径,就会开始运行自动安装脚本。
;; 需要额外安装popup插件。
;; 使用:编辑源代码文件时,自动运行。
(add-to-list 'load-path "C:/Users/rsreland/AppData/Roaming/.emacs.d/auto-complete")
(add-to-list 'load-path "C:/Users/rsreland/AppData/Roaming/.emacs.d/popup")
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "C:/Users/rsreland/AppData/Roaming/.emacs.d/auto-complete/ac-dict")
(ac-config-default)
;; 根据文件模式选择载入
(add-hook 'web-mode-hook #'auto-complete-mode)
(add-hook 'lisp-interaction-mode-hook #'auto-complete-mode)
(add-hook 'c-mode-hook #'auto-complete-mode)
(add-hook 'c++-mode-hook #'auto-comlete-mode)
;; 无论何种模式都启用
;; (auto-complete-mode 1)


;; ========================================
;; 外部程序设置
;; ========================================

;; Emacs+SBCL+SLIME
;; 下载:https://www.sbcl.org (SBCL)
;; https://github.com/slime/slime (Slime)
;; 功能:Common Lisp开发环境
;; 安装:为了加快启动速度及消除启动错误,需要创建一个包含socket支持和POSIX绑定的核心文件,以便启动时加载。
;; 首先打开cmd,在其中输入:sbcl。
;; 然后输入:(mapc 'require '(sb-bsd-sockets sb-posix sb-introspect sb-cltl2 asdf)) (save-lisp-and-die "D:/software/compiler/sbcl/sbcl.core-for-slime")
;; 核心文件就被创建了。
;; 设置启动时载入创建的核心文件。
(setq slime-lisp-implementations
'((sbcl ("sbcl" "--core" "D:/Software/Develop/SBCL/sbcl.core-for-slime"))))
;; 设置slime的启动目录
(add-to-list 'load-path "C:/Users/rsreland/AppData/Roaming/.emacs.d/slime")
(require 'slime-autoloads)
;; 设置SBCL的启动目录
(setq inferior-lisp-program "D:/Software/Develop/SBCL/sbcl.exe")
(slime-setup '(slime-fancy))



;; ========================================
;; 自动生成
;; ========================================

(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(ansi-color-faces-vector
[default default default italic underline success warning error])
'(blink-cursor-mode nil)
'(column-number-mode t)
'(custom-enabled-themes (quote (misterioso)))
'(show-paren-mode t)
'(tool-bar-mode nil))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(default ((t (:family "\320\302\313\316\314\345" :foundry "outline" :slant normal :weight normal :height 113 :width normal)))))

 

 

使用GNU Emacs

刚开始使用 GNU Emacs 时,会觉得很不习惯。不过没关系,这是正常现象,因为我们习惯了用鼠标在软件界面上操作,而 GNU Emacs 是完全可以在键盘上完成所有操作。而且 GNU Emacs 的快捷键与现在的通用快捷键完全不同,所以你要重新学习并记忆各个快捷键所代表的意义。

所以我建议在最开始使用之前,先到 Help 菜单中,选择 Emacs Tutorial 这个选项。这会启动 GNU Emacs 自带的快速学习教程,帮你尽快熟悉操作方法。

当你觉得 GNU Emacs 不能满足你的需求时,不要想着换一个编辑器,去上网查找一下 GNU Emacs 的插件和资料吧,你会发现只要下载几个插件,或者写几行 Lisp 代码,就可以给 GNU Emacs 添加你想要的功能了。

 

 

常用快捷键提示

GNU Emacs 快捷键命令通常包含 CONTROL 键(有时候以 CTRL 或 CTL 来标示)和 META 键(有时候用 EDIT 或 ALT 来标示)。为了避免每次都要写出全名,我们约定使用下述缩写:

C-[chr] 表示当输入字符 [chr] 时按住 CONTROL 键。因此 C-f 就表示:按住 CONTROL 键再输入 f (一般是按住CONTROL 键的同时再按 f 键)。

M-[chr] 意思与 C-[chr] 同理,表示当输入字符 [chr] 时按住 META(或 EDIT 或 ALT)键。

C-[chr] [chr] 则表示按住 CONTROL 键输入第一个字符 [chr] 后,在输入第二个 [chr] 。

C-[chr] C-[chr] 格式的快捷键,可以理解为连续键入两次 C-[chr] ,但更一般的做法是先按住 CONTROL 键,输入命令前半部分的 [chr] ,之后不要松开 CONTROL 键,只松开 [chr] 键,最后在输入命令后半部分的 [chr] 即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
C-g                         放弃当前命令

C-f 后一个字符
C-b 前一个字符
C-p 上一行
C-n 下一行
M-f 后一个单词
M-b 前一个单词
C-a 行首
C-e 行尾
C-v 向下翻一页
M-v 向上翻一页
M-< 到文件开头
M-> 到文件末尾

C-x u 撤销
C-space 标记(可能会和切换输入法快捷冲突)
M-w 复制
C-w 剪切
C-y 粘帖
M-y 粘帖更之前的
M-n 重复执行后一个命令n次
C-u 重复执行后一个命令4
C-u n 重复执行后一个命令n次
C-d 删除后一个字符
M-d 删除后一个单词
Del 删除前一个字符
M-Del 删除前一个单词
C-k 移除(kill)一行
C-t 交换两个字符的位置
M-t 交换两个单词的位置
C-x C-t 交换两行的位置
C-x i 在当前光标处插入文件

C-s 向后搜索
C-r 向前搜索
M-% 询问并替换(query replace)
Space或y 替换当前匹配
Del或n 不要替换当前匹配
. 仅仅替换当前匹配并退出(替换)
, 替换并暂停(按Space或y继续)
! 替换以下所有匹配
^ 回到上一个匹配位置
RETURN或q 退出替换

C-x C-f 打开或创建一个文件
M-x make-directory 创建一个目录
C-x C-s 保存
C-x C-w 另存为
C-x C-c 退出Emacs

C-x k 关闭当前buffer
C-x b 显示下一个buffer
C-x C-b 显示buffer列表

C-x 2 水平分割窗格
C-x 3 垂直分割窗格
C-x o 切换至其他窗格
C-x 0 关闭窗格
C-x 1 关闭除了光标所在窗格外所有窗格
C-x ^ 扩大窗格
M-x shrink-window 缩小窗格
M C-v 滚动其他窗格内容
C-x 4 f 在其他窗格中打开文件
C-x 4 0 关闭当前缓冲区和窗格
C-x 5 2 新建窗口(frame)
C-x 5 f 在新窗口中打开文件
C-x 5 o 切换至其他窗口
C-x 5 0 关闭当前窗口

C-x d 文件管理器
C-x C-q 将文件管理器设置为可编辑模式
C 复制
R 移动/重命名
d 标记等待删除
D 立即删除
e 或 f 打开文件或目录
g 刷新当前目录
m 用*标记
n 光标移动到下一行
o 在另一个窗格打开文件并移动光标
C-o 在另一个窗格打开文件但不移动光标
q 退出dired
R 重命名文件
u 移除标记
v 显示文件内容
d 标记等待删除
x 删除有D标记的文件
> 移动光标至后一个文件夹
< 移动光标至前一个文件夹
s 切换排序模式(按文件名/日期)
+ 创建目录
^ 访问上层目录

M-x ediff 文件对比(需安装 KDiff3)
M-x shell 打开shell模式
M-x slime 打开slime模式

C-x ( 开始定义宏
C-x ) 结束定义宏
C-x e 运行最近定义的宏
M-n C-x e 运行最近定义的宏n次
M-x name-last-kbd-macro 给最近定义的宏命名(用来保存)
M-x insert-kbd-macro 将已命名的宏保存到文件
M-x load-file 载入宏

M-x gdb 在另一个的窗格中打开gdb

解决乱码问题的相关快捷键
M-x describe-coding-system 显示当前Emacs的编码
C-x r 列出所有编码
C-x r <编码名称> 以指定的字符编码重新读取当前buffer
等价于 M-x revert-buffer-with-coding-system
C-x f <编码名称> 修改当前buffer的编码为指定字符编码
等价于 M-x set-buffer-file-coding-system
C-x c <编码名称> 将当前文本文件的编码转换为指定的编码
等价于 M-x universal-coding-system-argument

 

 


捐赠一元,支持一下!  

注:捐赠时如在留言中注明网名或昵称,即可被列入到感谢名单中。否则,会以佚名身份列入名单。


简单易懂的GNU Emacs安装教程:世界著名的顶级全能文本编辑器
https://rsreland.net/blog/202002291102/
作者
百二一
发布于
2020年2月29日
许可协议