Emacs 基本操作

按键约定

组合按键

Emacs 中大量的按键操作都是各式各样的组合按键(快捷键),下面是几种通常的约定:

  • Ctrl 键:表示为 C

  • Alt 键:表示为 M

  • Shift 键:表示为 S

组合按键:比如向下移动一行的组合按键是 Ctrl+n,就表示为:C-n,其含义表示同时按下键盘上的 Ctrl 和 n 键。

按键顺序

有时候用多个组合按键来表示一种操作,比如以下按键序列:
C-x C-f [文件路径] <RET>就表示打开文件的操作,它表示这样的操作含义:先同时按下Ctrlx 键,然后松开,紧接着马上再同时按下 Ctrl 和 f 键,然后再松开,然后在下方的输入栏中输入文件路径,输入完之后按回车键(用表示),最后就打开了一个文件。

还有一种按键顺序:C-x o,表示切换到另外一个缓冲区,它是这样一组按键:先同时按下 Ctrlx 键,然后松开,然后紧接着按字母o键。
还有另外一种按键顺序,比如以下按键序列:C-u [10] C-p,就表示这样的操作含义:先同时按下 Ctrlu 键,然后松开,然后依次按 10 键,然后松开,最后再同时按 Ctrlp 键。这组按键达到的效果就是把光标从当前位置往上移动 10 行。

特殊按键

  • 表示输入内容,用方括号括起来:[输入的内容]

  • 表示回车键:<RET>

  • 表示其他键:比如<Backspace>表示退格键(删除键),表示删除键,表示 TAB 键,表示左箭头键,表示右箭头键,表示上箭头键,表示下箭头键,表示 F5 键。

Quick Start

文本操作,无外乎打开文件、编辑文件、保存文件,涉及的核心、最高频命令非常简单,整理如下:

  • C-x C-f [文件路径] :打开一个文件

  • C-n:将光标向下移动一行

  • C-p:将光标向上移动一行

  • C-g:取消之前的按键(将会成为最常用的按键之一)

  • C-x C-s:保存文件

  • C-x C-c:退出 Emacs

常用操作分类汇总

文件操作

  • C-x C-f [文件路径] :打开一个文件

  • C-x C-s:保存文件

  • C-x 4 f [文件路径] :在一个新的窗格(缓冲区)中打开文件

  • C-x 5 f [文件路径] :在一个新的窗口中打开文件

移动操作

  • C-n:将光标向下移动一行

  • C-p:将光标向上移动一行

  • C-b:将光标左移一个字符

  • C-f:将光标右移一个字符

  • M-f:将光标右移一个单词

  • M-b:将光标左移一个单词

  • C-v:向下移动一屏

  • M-v:向上移动一屏

  • C-l:将当前光标所在行移动到屏幕中央(注意:这里是字母 L)

  • C-a:将光标移到行首

  • C-e:将光标移到行尾

  • M-S-<:将光标移动到文件开头

  • M-S->:将光标移动到文件末尾

  • M-m:将光标移动到行首的第一个非空白字符

查找与替换操作

  • C-s [查找的内容]:向前查找

  • C-r [查找的内容]:向后查找

  • C-M-s [查找的内容]:向前正则查找

  • C-M-r [查找的内容]:向后正则查找

  • M-S-%:查找并替换,操作步骤如下:按下 M-S-%键启动查找替换,输入要被替换的词,回车,然后输入要替换的词,再回车。被替换的词此时会高亮起来,这时,输入 y 替换并跳到下一个,输入 n 忽略并跳到下一个,输入 q 结束,输入!替换剩下的全部。

文本选择操作

  • C-S-e:选中从当前位置到行尾的文本

  • C-S-n:从当前位置开始往下选中一行文本

  • C-S-p:从当前位置开始往上选中一行文本

  • C-S-f:从当前位置开始往后选中一个字符

  • C-S-b:从当前位置开始往前选中一个字符

  • M-S-f:从当前位置开始往后选中一个单词

  • M-S-b:从当前位置开始往前选中一个单词

  • M-S-e:选中从当前位置开始到当前句尾的文本

  • M-S-a:选中从当前位置开始到当前句首的文本

  • C-S-@ [其他移动操作]:从一个起始位置,选中连续的字符,比如 C-S-@ C-e 就表示选中从当前光标位置到行尾的所有字符

  • C-S-v:向下选择一屏

  • M-S-v:向上选择一屏

  • C-S-l:让当前光标所在行居中

  • C-x h:全选

文本编辑操作

插入文本:只要光标在当前缓冲区,就可以直接输入插入文本。

  • C-k:删除光标到行尾的所有字符

  • C-u [N][操作序列]:重复执行一个操作序列 N 次

  • C-/或 C-x u:撤销(undo)上次操作,多次按可以撤销之前的多次操作

  • C-g C-/:重做(redo),用于重做上次的撤销动作(撤销之后后悔了,想恢复重做)

  • :删除当前光标前的一个字符

  • C-:删除当前光标前的一个单词

  • C-d 或:删除当前光标后的一个字符

  • M-:剪切当前光标前的一个字符到剪贴板

  • M-d:剪切当前光标后的一个字符到剪贴板

  • C-k:剪切从光标到行尾的字符到剪贴板

  • C-y:粘贴剪贴板中的文本到当前光标位置

  • M-w:复制当前选中的字符

  • C-w:剪切当前选择的字符到剪贴板

  • C-a C-k:剪切一整行到剪贴板中,其实也可以用于删除一整行

  • C-e :在当前行下方插入一空行

  • C-x C-q:让当前 buffer 在“只读”和“读写”两种编辑模式之间切换

多窗格与多窗口

首先要明确一下 Emacs 中窗格与窗口的概念的区别:每个窗格其实就是一个缓冲区,一个窗口中可以同时打开多个窗格,而窗口就是像 Windows 那样的 GUI 窗口。

  • C-x 1:仅保留当前窗格,关闭其他窗格

  • C-x 2:在垂直方向打开 2 个窗格

  • C-x 3:在水平方向打开 2 个窗格

  • C-x o:在不同窗格之间切换

  • C-x 0:关闭当前窗格

  • C-x S-{:减小当前窗格的水平宽度

  • C-x S-}:缩小当前窗格的水平宽度

  • C-x S-^:增大当前窗格的垂直高度

  • C-M-v:在另一个窗格中向下滚动一屏(但光标还保留在当前窗格)

  • C-M-S-v:在另一个窗格中向上滚动一屏(但光标还保留在当前窗格)

  • M-x make-frame:打开一个新窗口

  • M-x delete-frame:关闭当前窗口

  • C-z:挂起当前的窗口(相当于最小化当前的窗口)

文本编码

M-x describe-coding-system :查看当前缓冲区的编码格式

C-x r :列出当前的所有编码

C-x f utf-8 :改变当前缓冲区的编码为 utf-8

命令与函数操作

  • M-x [函数名] :执行一个函数

  • M-S-! [命令] :执行一个命令行命令

  • M-x shell :在一个新窗格中、当前目录位置打开命令行

一些常用操作

  • M-x goto-line [行号] :跳转到某一行,将其绑定到快捷键 C-c j:

  • 快速跳到某一行 (global-set-key (kbd “C-c j”) ‘goto-line)

  • M-x electric-pair-mode :打开括号配对模式

缓冲区

  • C-x C-b:在一个新窗格中列出当前所有的缓冲区

  • C-x b xxx :切换到名为 xxx 的缓冲区

  • C-x k xxx :关闭一个名为 xxx 的缓冲区(如果直接按回车,默认关闭的是当前缓冲区)

  • C-x s:一个个询问是否保存当前每个缓冲区的内容

  • M-x kill-some-buffers :一个个询问是否关闭当前打开的缓冲区

  • C-x :在多个缓冲区之间切换

  • C-x :在多个缓冲区之间切换

配置相关

  • C-x d S-~ :打开 Emacs 配置文件所在路径

  • C-h v load-path :查看 Emacs 的加载路径

帮助操作

  • C-h t:查看 Emacs 快速指南

  • C-h f:查看一个函数(命令)的帮助文档

  • C-h S-?或 M-x [help]:查看帮助

  • C-h c [命令序列]:显示命令序列对应的函数名

  • C-h k [命令序列]:显示命令序列的详细文档(打开一个新窗格)

  • C-h a [关键词]:打开一个新窗格列出所有含有此关键词的命令

  • C-h i:查看信息字典文档

  • C-h r:查看使用手册

  • C-h m:查看当前缓冲区的 major mode 和 minor mode 及其介绍

  • C-h b:查看和当前缓冲区绑定的快捷键列表

  • C-h v [变量名]:查看某个变量的值

  • C-h w [函数名]:查看某个函数绑定的快捷键

  • C-h i m [elisp] :查看 elisp 文档

命令行操作

以下操作都是在系统命令行中的操作:

emacs -nw -Q:在命令行中打开 Emacs,-nw 参数表示:no window,-Q 参数表示:不显示欢迎界面。在命令行打开 Emacs 后,各项操作和按键与在 GUI 窗口中是一致的

配置文件基本用法

配置文件的位置 emacs 配置文件有两个位置:/.emacs 和/.emacs.d/init.el,下面以/.emacs.d/init.el 为例进行说明(如果不存在,则自行创建一个该文件即可)。为了不产生影响,需要把/.emacs 这个文件删掉。

打开配置文件的快捷键

在 emacs 中打开配置文件所在的路径(/.emacs.d)有一个快捷键:C-x d S-
修改配置文件并使之生效
打开 emacs 的配置文件~/.emacs.d/init.el,在文件的最后追加一行内容并保存:

1
2
;; 默认显示行号
(global-linum-mode 1)

然后执行 M-x load-file init.el 操作使得配置文件生效。这时再看打开的文本文件,就会发现左边多出来了行号。

把打开、加载配置文件的操作绑定到自定义的快捷键上

在配置文件 init.el 后面追加下面的代码并保存:

1
2
3
4
5
6
7
8
9
10
;; 定义一个函数:快速打开配置文件
(defun open-init-file()
(interactive)
(find-file "~/.emacs.d/init.el"))

;; 把函数 open-init-file 绑定到快捷键<F2>键上
(global-set-key (kbd "<f2>") 'open-init-file)

;; 快速加载 init.el
(global-set-key (kbd "C-<f5>") 'load-file)

执行 M-x load-file init.el 操作使得配置文件生效,这时再按键就可以直接快速打开 init.el 配置文件了,再次修改 init.el 文件后,也可以直接按快捷键 C-使配置生效了。