当前位置: 首页 > 资讯 >

实时:省时省力写 LaTeX: 新手Emacs快速配置与插件管理

来源:哔哩哔哩   时间:2023-04-29 04:47:28

承接上期五分钟说服你用Emacs写LaTeX, 在本期我将带领大家进行用于 LaTeX 写作的 Emacs 基本配置, 讲解从软件安装到插件管理的全过程. 最后将给大家推荐两组非常实用的插件: 第一组插件 which-key + keycast + helpful 将帮助我们快速熟悉 Emacs 的操作和概念, 第二组插件 vertico + marginalia + orderless 将有效提升我们在小缓冲区的补全体验, 并附上 cdlatax 和 AucTeX 的基本设置.

Table of Contents

Emacs 安装

Linux


(相关资料图)

MacOS

Windows

安装 Emacs 后的额外设置

Emacs 基本知识讲解与必知快捷键

中止命令与撤销命令

文件与窗口相关命令

帮助命令

复制/剪切/粘贴

Emacs 插件管理

package.el 设置示例

straight.el 设置示例

推荐插件

插件组合1: 更多的帮助信息

插件组合2: 更好的补全界面

基本的 cdlatex + AucTeX 设置

有用的链接

Emacs 安装

Emacs 可以在 Windows, Linux, MacOS 全平台上运行, 甚至在 Android 上也可以通过 termux 等命令行工具使用. 2023年4月底的最新的正式版本 28.2, 但下一版本的测试版版本号已经来到了29.090, 不日也将正式发布. 下面介绍的安装方法主要针对的是最新正式版.

无论在什么平台上, Emacs 的安装通常是利用开源软件管理器实现的. 在 Windows 和 MacOS 上大家就需要自行安装这样的软件管理器. 我们下面详细说明.

Linux

Linux 系统用自带软件管理器就可以安装 Emacs. 比如, 在 Ubuntu 上我们可以使用 apt. 安装 Emacs 只需要在命令行中输入

MacOS

苹果电脑上我们需要先安装 Homebrew (官网: https://brew.sh/). 安装方法是在命令行中输入

当 Homebrew 安装成功后会有提示. 这时候用可以利用 Homebrew 安装 Emacs 了. 只需要在命令行中输入

Windows

Windows 下安装 Emacs 主要有两种方法. 第一种是从这里: https://www.msys2.org/安装并下载 msys2, 安装结束后打开它的 mingw64.exe 命令行 (默认目录是 C:/msys64/) 并输入

通过 msys2 安装的好处是上面还可以很方便安装其它开源软件, 如 git, epdfinfo 等. 在 BV1pg4y1s7Z9 中我们就利用 msys2 配置了 pdf-tools. 这是 Emacs 中一款很好用的 pdf 阅读器.

另一种安装方法是直接从官网: http://ftp.gnu.org/gnu/emacs/windows/emacs-28/上下载安装包. Emacs 28 的安装包已经优化了不少, 会自动把程序安装至

安装 Emacs 后的额外设置

在安装完 Emacs 之后, 我强烈推荐大家在你使用的机器上交换 <大写锁定键> 与 <control>. Emacs 常常使用 以 <control> 开始的快捷键. 在 Emacs 诞生之初时通用的键盘, <control> 确实是在当今键盘 <caps lock> 的位置的. 交换这两个键的具体操作在不同系统上也不一样.

在 Windows 下我们需要去修改注册表. 方法如下

<Win> + r 输入 regedit 打开注册表

找到 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]

打开或新建 Scancode 文件, 把内容修改为

保存 Scancode 文件并重启电脑

在 Ubuntu 下, 可以使用图形界面的 gnome-tweaks 找到交换 <caps lock> 和 <control> 的设置. 安装 gnome-tweaks 可以通过 apt 进行:

然后打开 gnome-tweaks 的键盘设置, 在高级选项里有关于 <control> 键的设置. 你不仅仅可以交换它与 <caps lock>, 也可以进行许多别的设置.

又或者, 在很多 Linux 系统的命令行下输入

也可以交换 <caps lock> 与 <control>.

在 MacOS 中, 大家可以在 system -> keyboard -> functional keys 中调整所有功能键的键位.

最后再啰嗦一句, 交换 <caps lock> 与 <control> 绝不是可有可无的事情, 它在我们日常使用 Emacs 中真的非常重要! 大家千万不要怕麻烦.

剩下两个设置只有 Windows 用户需要进行. 第一是把 Emacs 的家目录, 在 Emacs 中通过 ~ 访问, 改成 C:/Users/<用户名>/. 默认的家目录是 C:/Users/<用户名>/AppData/Roaming/. 从这个目录出发不方便我们访问像 "我的文档" 这种常用文件夹, 所以我们需要手动修改家目录为 C:/Users/<用户名>/, 与 Linux 和 MacOS 保持一致. 方法是搜索 Edit system variables, 打开环境变量的设置, 然后增加一个用户的环境变量 HOME, 把它设置为 C:/Users/<用户名>/.

第二是保证你的 Emacs 安装目录在系统变量 PATH 上. 如果不在, 还是在同一个界面, 把包含你 emacs.exe 的文件夹路径手动添加到 PATH 变量中.

Emacs 基本知识讲解与必知快捷键

在Emacs 中大家需要理解的一个核心概念就是命令. 在 Emacs 中所有的操作, 无论简单复杂都是命令.Emacs 这个单词就来自于 macro, 即宏命令. 比如说我们想执行打开一个文件的操作, 有3种方式等价的操作方式:

在菜单栏里选择 file -> visit new file, 然后和普通的软件一样选择你要打开的文件.

执行 open-file 命令. 方法是按下 M-x (M = Alt), 然后在最下面的小缓冲区输入 open-file, 然后输入文件名.

按下 C-x C-f 快捷键, 并输入文件名.

Emacs 中有许多有用的命令. 你未来也可以自己通过 elisp 语言编写自己命令. Emacs 把其中最常用的命令都绑定了快捷键, 用户自己也可以设置自己的快捷键. 当我们用熟了之后, 很多快捷键就会像打字一样形成肌肉记忆. 作为新手, 我们有很多键盘的快捷操作可以用鼠标代替. 下面这张表我给大家总结了新手必知的几个快捷键.在表中, C 表示 control 键, M 表示 alt. 这也是 Emacs 快捷键通用写法. 最右边一列是快捷键对应的命令名, 也就是第一列所有的快捷键都等价于 M-x 加上第三列.

快捷键操作命令名C-g中止当前一!切!命!令!keyboard-quitC-/撤销命令undo文件操作  C-x C-f打开文件find-fileC-x C-s保存文件save-bufferC-x b切换文件 (缓冲区)switch-to-bufferC-x 1关闭其它窗口delete-other-windowC-h f/v/k查询命令/变量/快捷键describe-function/variable/key文本处理  M-x复制kill-ring-saveC-w剪切kill-regionC-y粘贴yank

中止命令与撤销命令

在 Emacs 中发生误操作时, 你需要知道如何中止与撤销命令. 当你的快捷键输入一半想反悔时 (是的, Emacs 的快捷键可以很长!), 可以使用 C-g 重新来输入, 又或者 Emacs 在执行命令时卡住了, 你可以通过 C-g 来让它恢复正常.

如果你需要撤回上一条命令, 则需要使用 C-/. 但值得注意的是, 撤回撤回命令的命令也是同一个键; 这偶尔会让人抓狂.

文件与窗口相关命令

下面我们介绍 Emacs 中最基础的几个管理界面的快捷键.

首先是打开文件, C-x C-f, 命令名是 find-file. 这里的 find 隐含 Emacs 会根据不同情况执行不同操作: 若文件存在, 则是普通的打开文件; 若文件不存在, 则是打开一个新文件.

第二个是保存文件, C-x C-s, 对应 save-buffer, 即把当前缓冲区 (更新后) 的内容写进文件里.

大多数情况将缓冲区 (buffer) 等同于文件不会影响你的 Emacs 使用. 这里简单讲讲它们的不同. 文件存在于电脑硬盘上, 而Emacs 的缓冲区只显示文件内容. 当你把文件内容读入缓冲区以后, 又在 Emacs 外修改了文件的内容, 缓冲区中的内容并不会改变, 除非你明确指示 Emacs 重新读取. 而在 Windows 中, 一个文件同时只能被一个 Windows 程序打开. Emacs 的缓冲区也不一定对应着文件, 在模式栏大家可以看到当前缓冲区的名字. 名字被两个 * 号包含的一般是非文件的缓冲区, 例如 *Message* 用于显示 Emacs 给用户的信息, 编译 LaTeX 时 *Output* 会存放编译输出结果等.

第三个命令是切换缓冲区/文件, C-x b, 对应 switch-to-buffer. 执行后在最下方的小缓冲区会提示输入你想要切换的缓冲区名字, 默认是上一个显示的缓冲区, 直接回车就行.

在 Emacs 中同时显示多个缓冲区的方法是打开多个窗口 (window), 然后在每个窗口中显示一个缓冲区. 有时 Emacs 自动创建新的窗口, 例如展示帮助信息时. 新手最常用的操作是保留当前光标所在窗口, 而关掉其它所有窗口. 这可以通过, C-x 1, 即 delete-other-window 实现. 我们可以用鼠标辅助我们在不同窗口间切换.

帮助命令

Emacs 中查询帮助信息的快捷键是 C-h <字母>. 常用的有 C-h f, 查询命令, C-h v, 查询变量, 以及 C-h k, 查询快捷键. 通常 C-h 命令会自动创建新的窗口显示帮助信息.  我们可以先把光标移到我们工作的缓冲区, 然后用 C-x 1 关闭掉帮助信息窗口. 注意此时帮助信息的缓冲区并没有关闭, 重新显示可以通过 C-x b 并查找以 *help* 命名的缓冲区.

复制/剪切/粘贴

Emacs 有自己一套复制/剪切/粘贴的快捷键: M-w / C-w / C-y. 这和一般程序的 C-c / C-x / C-v 不同, 需要大家习惯. 所有复制或剪切的内容都会进入一个叫 kill-ring 的地方, 它相当于一个剪粘版的历史记录. 粘贴快捷键 C-y 会粘贴最近一条记录, 如果你想访问之前的记录, 可以紧跟着 C-y 再按下一次或多次 M-y.

Emacs 插件管理

接下来我们介绍如何更好地管理 Emacs 插件, 或叫 Emacs 包 (package). 插件可以给我们带来更多的功能, 是 Emacs 使用中不可缺少的一环. 插件的安装和设置与其它的 Emacs 设置一样, 都放在 Emacs 的启动文件 ~/.emacs.d/init.el 中. 关于插件安装与设置, 我推荐大家使用现在常用的 use-package 语法, 它的语法更简洁, 还可以很方便地自动安装插件.

Emacs 中下载新的插件可以通过不同的方式 (这本身也是通过某些插件管理的). 常用的有两种, 一种是用内置的 package.el, 这里插件名字就叫 package, .el 后缀来自于 Emacs 的编程语言 Elisp.第二种是用 straight.el. package.el 会从官方的插件库或镜像网站上下载新插件, 而 straight 用下载插件的源代码并编译, 一般是利用 git 从 github 上下载. 为了使用 straight 你需要系统上已经安装了 git 程序, 并且能正常地访问 github.com. 以下我们介绍两种安装方式如何设置.

我们在 package.el 和 straight.el 的设置示例中都手动检查并安装了 use-package. Emacs 29 后 use-package 已经是内置插件, 相关代码可以省去.

package.el 设置示例

以下我们提供了 package.el 的一个设置示例. 大家需要把如下代码放入设置文件 ./.emacs.d/init.el 中.

这段代码的第一部分先启用了 package.el, 然后通过 package-archives 变量设置了下载插件的网址. 在国内也可以使用清华的软件源. 接下来 package-refresh-contents 刷新了插件列表. 然后我们自动检测 use-package 是否安装, 如果没有安装则自动下载安装. 最后, 我们设置了 use-package-always-ensure 变量为 t, 这样以后我们所有用 use-package 声明的插件都会自动安装.

straight.el 设置示例

straight 需要用 git 从 github 等网站上下载源码. 请再三确认 git 在系统路径上 (尤其是用 msys2 安装的 Windows 用户).

因为 straight.el 与 package.el 难以共存, 所以我们必须早早手动禁用内置的 package.el. 这必须修改一个我们平时很少用的 .emacs.d/early-init.el. 我们需要在 early-init.el 中加入

接下来, 我们需要在 init.el 中加入以下代码:

这里大部分的代码是 straight.el 的 github 主页上提供的下载与安装 straight 的代码, 然后再用 straight 安装 use-package. 最后我用把 straight-use-package-by-default 变量设为 t, 这是在使用 straight 时进行插件自动安装的设置.

推荐插件

下面我给大家推荐两组非常实用的插件. 在进行好 package.el 或者 straight.el 的设置后 (注意: 不能同时使用), 安装与设置插件只需要把相关的 use-package 代码块复制到 init.el 即可. 而且在两个体系下的代码块基本是通用的.

我们之前也都设置了自动安装插件. 当你第一次执行 init.el 时 (通常是第一次重启 Emacs 的时候), Emacs 会自动检测你在 init.el 中声明的插件是否已经安装, 若没有则通过指定的方法 (package.el 或 straight.el) 自动下载安装. 如果大家在一台新的机器上使用 Emacs, 把 init.el 文件复制到新机器上就可以直接获得一模一样的使用体验!

你也可以在修改完 init.el 后, 执行 M-x eval-buffer 命令手动加载新加的 use-package 代码块.

在复制代码块中最常见的问题是某个地方在复制的过程中漏了括号. 大家已经发现 elisp 语言中括号是必须配对的. 我们可以在修改 init.el 后手动的用 M-x match-paren 检查括号是否匹配. 如果有不匹配的括号, 那么光标就会跳过没有匹配成功的括号上, 否则这个命令不会用任何效果.

插件组合1: 更多的帮助信息

我们首先介绍 which-key + keycast + helpful. 安装代码如下

which-key 可以在按下快捷键的时候自动提示你接下来可能的快捷键. 比如按下 C-h, 就会提示接下来你按 v, f, k 等可以查看哪种类型的帮助. 如果把鼠标悬停在选项上也会在浮窗中显示对应命令的帮助.

keycast 则会显示当前你使用的快捷键及对应的命令名. 它有4种显示的位置. 代码中我们选择在 headrer-line , 也就是 Emacs 窗口的最上方显示. 如果大家想在别的地方显示, 比如模式栏, 可以把 (keycast-header-line-mode 1) 改成 (keycast-mode-line-mode 1).

这两个插件可以帮助新手快速熟悉 Emacs 的快捷键和命令. 对于老用户来说, 也可以帮你快速熟悉新安装的插件. 我自己平时也是常开的.

helpful 则优化了帮助界面的信息显示, 包括更多有用的信息和高亮.

插件组合2: 更好的补全界面

在 Emacs 中输入命令或打开文件, 切换缓冲区等等都会用到小缓冲区补全. 第二组插件是针对小缓冲区补全的. 代码如下

vertico 把每个补全选项放在单独的一行, 配合 marginalia 会在每个选项的右边加入更多相关信息.

在小缓冲区中输入时, 我们可以按 <tab> 补全当前的输入. 加入 vertico 之后, 我们可以用 C-n 和 C-p 或者上下移动键来选择不同的补全选项. C-n 和 C-p 也是 Emacs 中上下移动光标的快捷键.

最后的 orderless 允许我们在小缓冲区补全时忽略单词的顺序. 例如, 如果我们输入 M-x, 想要匹配 find-file 命令, 在默认情况下必须先输入 find, 再输入 file 才能找到 find-file. 如果你用了 orderless, 则可以通过 file find 找到, 或者部分的单词 fil fin <tab> 找到.

基本的 cdlatex + AucTeX 设置

最后我们提供一个简单可用的 cdlatex 和 AucTeX 设置. 大家只要把这段代码复制进 init.el 就可以实现视频中五分钟说服你用Emacs写LaTeX的大部分功能.

这个基本设置不一定能实现 pdf 正向或反向搜索, 因为这取决于操作系统与 pdf 阅读器. 如果你想在 Emacs 中获得统一的 pdf 体验, 可以考虑使用 pdf-tools (见视频 BV1pg4y1s7Z9).

关于 cdlatex 的安装, 要注意的是, 它并不在任何的软件源时. 如果使用 package.el, 你需要手动下载这个文件 (github 或者我网盘里的备份), 并用 :load-path 关键字指定文件的目录. 如果是 straight, 则需要我们指定 github 源码的网址.

AucTeX 是通过 use-package tex 激活的. 因为不同名的问题, 我们要额外加入 :ensure auctex 或 :straight auctex. 另外, 其实 Emacs 已经内置了 AucTeX, 但不一定是最新版本, 我们这里的 use-package 则会把它更新到最新版.

有用的链接

Emacs 官网: https://www.gnu.org/software/emacs/

我的坚果云分享: https://www.jianguoyun.com/p/DTiBwxMQ856tCxiflP0E

我的 Emacs 设置: https://gitee.com/mickey991/emacs-latex/tree/master/my-emacs-config

X 关闭

推荐内容

信息

Copyright ©  2015-2022 太平洋母婴网版权所有  备案号:豫ICP备2022016495号-17   联系邮箱:93 96 74 66 9@qq.com