Doom Emacs 简介

Posted 网易游戏运维平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Doom Emacs 简介相关的知识,希望对你有一定的参考价值。

(网易游戏运维平台)


SteamedFish


SteamedFish,网易特级摸鱼工程师,擅长摸鱼,热爱带薪折腾无用的东西,喜欢磨刀但是不喜欢砍柴。

Doom Emacs 简介

前言

文本编辑器是我们日常工作中打交道最多的几个工具之一了(终端模拟器、浏览器,是另外两个工作中需要大量使用的工具)。笔者自己的经验是,每天工作的 30% - 50% 的时间会在文本编辑器下面工作。因此,深入学习文本编辑器的功能,提高使用文本编辑器的效率,磨刀不误砍柴功,对工作效率的提升是很有帮助的。
提起文本编辑器,最出名的就是 Emacs 和 VIM 了。Emacs 和 VIM 都因为其超强的扩展性和可配置性,从而功能异常强大。尤其是 Emacs,拥有及其强大的特性集和极为灵活的扩展和配置,可以实现非常多不可思议的功能,是目前功能最强大的文本编辑器。VIM (以及 neovim)最近几年也在快速发展中,之前很多 VIM 没有的特性现在也慢慢开始增加进来,目前和 Emacs 各有其优缺点,分别属于编辑器之神神的编辑器。最近还有一匹编辑器的黑马,vscode,开始流行起来,也是非常不错的编辑器。
不论是 Emacs 还是 VIM,都有学习成本过高的缺点,Emacs 更是以学习成本最高的文本编辑器而著称。所以,社区现在涌现了众多的 Emacs 和 VIM 的「发行版」。这些「发行版」会帮你安装和配置好大量的插件,有的「发行版」还提供了再它们的基础上进一步做自定义的手段和工具。这些「发行版」大大降低了 Emacs 和 VIM 的学习成本,让 Emacs 和  VIM 变得开箱即用。我们推荐选择一个「发行版」,在此基础上来学习 Emacs 或 VIM,而不推荐从零开始学习。
这种「发行版」特别多,各有优劣。如果论名气和人气的话,根据笔者有限的涉猎,应该是 Spacemacs 这个 Emacs 「发行版」和 SpaceVIM 这个 VIM 「发行版」名气最大,人气最旺。但是笔者使用最多,也是最喜欢的,是一个叫做 Doom Emacs 的 Emacs 「发行版」。由于笔者对其他可能更热门的「发行版」并不熟悉,所以只能介绍这个稍显冷门的发行版了,供大家在学习 Emacs 的过程中做参考。

Doom Emacs 简介

Doom Emacs 这个 Emacs 「发行版」,具有以下特点:
  • 极端重视速度。使用了大量的手段来确保启动和运行速度尽可能快,使用尽可能流畅
  • 不使用任何图形化界面或者需要动用鼠标的工具,而是完全使用命令行进行管理
  • 为已经习惯了 VIM 的操作方式,但是希望使用 Emacs 的强大功能的人所设计
  • 假定用户是愿意投入时间和精力学习、了解 Emacs 和修改配置的极客,尽可能避免使用复杂的封装隐藏掉 Emacs 内部的机制,并且提供了方便的修改机制,可以自由地进行各种调整
如果这些特点和你不匹配(例如你不会,或者不喜欢 VIM 的操作方式),那么你不适合使用 Doom Emacs,你应该使用其他的「发行版」,例如 Centaur Emacs 或者 Spacemacs 等。

Doom Emacs 的安装

Emacs 的安装

由于 Doom Emacs 只是 Emacs 的一个配置文件,因此第一步应该安装 Emacs。我们推荐安装最新的稳定版本 Emacs 26.1 以上版本,或者使用开发版本 Emacs 27,因为 Doom Emacs 的有些特性(例如 childframe 等)只有 Emacs 26.1 或者以上的版本才能支持。
以笔者比较熟悉的几个发行版为例,安装方法为:
  • macOS 安装 Emacs(假定你使用的是 homebrew 作为包管理器)
    1brew tap railwaycat/emacsmacport
    2brew cask install emacs-mac
    3# 修改 /etc/paths 文件,确保 /usr/local/bin 在 /usr/bin 的前面
    4# 避免系统使用 macOS 自带的老版本 Emacs
  • ArchLinux 安装 Emacs
    1pacman -S emacs
  • Debian 安装 Emacs
    如果使用的是 Debian 10,直接安装 Emacs 即可。
    1apt install emacs
  • 其他发行版
    使用该发行版的包管理工具搜索并安装 Emacs 即可。
    如果自带的 Emacs 版本太老(推荐使用 Emacs 26.1 以上版本),那么推荐使用 snap、nix、flatapk、LinuxBrew 等第三方包管理器来安装最新的 Emacs 版本。以 Debian 9 使用 snap 为例:
    1apt install snapd
    2snap refresh
    3snap install core
    4snap install --classic emacs
  • Windows
    笔者没有在 Windows 下面使用过 Doom Emacs。

Doom Emacs 的安装

Emacs 的配置文件目录在 ~/.emacs.d/ 下面。因此需要将 Doom Emacs 放在这个目录。

由于 Doom Emacs 使用了 ~/.emacs.d/,修改里面的文件内容会破坏 git 状态,导致后续无法通过 git pull 等方式来更新 Doom Emacs,因此 Doom Emacs 会读取 ~/.doom.d/ 目录下面的内容,并且推荐用户使用 ~/.doom.d/ 目录来放置进一步的自定义配置。

Doom Emacs 有多个分支,推荐使用 develop 这个分支。
1# 如果之前已经有配置文件,移走做个备份
2[ -d ~/.emacs.d ] && mv -v ~/.emacs.d ~/.emacs.d.bak
3[ -f ~/.emacs ] && mv -v ~/.emacs ~/.emacs.bak
4# 下载 Doom Emacs 到 ~/.emacs.d 目录,推荐使用 develop 分支
5git clone -b develop https://github.com/hlissner/doom-emacs.git ~/.emacs.d
6# 在 ~/.doom.d 下面创建默认配置文件并初始化 Doom。
7~/.emacs.d/bin/doom quickstart
在执行 quickstart 的过程中,会自动从 GitHub 等来源下载大量的 Emacs 插件,还会自动下载并安装一些字体,因此第一次安装会非常久,网速慢的话可能要半个小时以上,请耐心等待。
如果你发现字体的下载安装太慢,你可以去 https://github.com/domtronn/all-the-icons.el 项目下,自己下载 fonts 目录下面的所有字体并且安装到你系统上,然后跳过字体安装的环节。
安装完成之后,就可以打开 Emacs 啦。Doom Emacs 支持命令行版本和图形界面版本的 Emacs,如果使用图形界面的版本会有更多功能,推荐尽可能使用图形界面版本。

Doom Emacs 的基本概念

按键和按键序列

Doom Emacs 简介

例如, M-x ,表示按住  Alt  键不放,同时按下  x  键。
Doom Emacs 使用按键序列来表示某个功能。 例如使用按键序列  SPC f . (表示先按下  SPC ,也就是空格,松开,再按下  f ,松开,再按下  . )来搜索当前目录下的文件。
其中, SPC  叫做前缀按键。 当按下前缀按键,整个按键序列还没结束的时候,Doom Emacs 会在最下方(叫做 mini buffer)显示所有可用的按键的菜单,作为提示。 例如,当按下了  SPC f  的时候,mini buffer 中会提示,继续按  .  则可以搜索当前目录下的文件: Doom Emacs 简介
如果可用的按键特别多,mini buffer 空间不够显示不全,则会显示页数(例如 1 of 4 表示一共 4 页)。 可以按 C-h 来翻页。

Doom Emacs 简介

关于按键序列,以下需要记住的是:
  • C-g 可以退出没结束的按键序列。 例如你当前已经按下了 SPC f 但是后悔了,可以按 C-g 来取消。 C-g 除了取消按键序列之外,还可以用来取消任何 Emacs 当前正在执行的操作。 如果你的 Emacs 在做一些非常耗时的事情,导致卡住了,你又不想等待,可以狂按 C-g ,一般就好了。
  • SPC 这是 Doom Emacs 最重要也是最核心的前缀按键,绝大多数功能都通过这个前缀按键触发。 建议大家完整翻阅一遍 SPC 这个前缀按键下面的所有功能。
  • g 这是 NORMAL 模式或者 VISUAL 模式下最重要的编辑前缀按键。 例如 VISUAL 模式下 gc 为注释(或者解除注释)当前选中的部分,NORMAL 模式下 gD 为查找光标所在变量的所有引用等。 建议大家分别在 NORMAL 模式和 VISUAL 模式下完整翻阅一遍这个前缀按键下面的所有功能。
  • C-x 为 Emacs 的主菜单,提供的是 Emacs 通用的功能,例如 C-x C-c 为保存并退出 Emacs, C-x C-u 将当前选择的区域变成大写等。 这个菜单里面的功能不会随着当前模式的改变而改变。
  • C-c 为当前模式的菜单,提供的是当前模式特有的功能,例如如果你在编辑 python 文件,那么 C-c < 可以调整 python 代码块的缩进。 这个菜单里面的功能会随着当前模式的改变而改变。
  • C-h 获取帮助。 这个按键的作用和 SPC h 是一样的,但是在 INSERT 模式下面也能用。 例如,如果你想知道在 INSERT 模式下面, TAB 这个按键到底是做什么用的,你是不能使用 SPC h k TAB 的,因为这样是插入了这些字符,但是你可以使用 C-h k TAB
  • z 代码折叠、宏等一些小功能。
如果实在记不住按键序列的话,还可以使用 Emacs 的菜单栏(Mac 系统默认带菜单栏,Linux 下面需要使用命令 M-x menu-bar-mode 打开菜单栏),直接使用鼠标点击菜单来执行各种命令。
如果记不住按键序列,又不想用鼠标,还有个办法,就是使用 M-x 这个按键下面可以模糊搜索所有 Emacs 支持的命令(模糊搜索功能默认不打开,需要配置为打开, 后面会讲怎么配置模糊搜索)。 例如你要查找文件,忘记了应该用哪个按键序列,你可以直接 M-x findfile ,然后找到你想要的命令(使用 C-n C-p 翻页),按回车执行就好。

Doom Emacs 简介

buffer

每打开一个文件,Emacs 就生成一个 buffer。
可以使用 SPC b 或者菜单里面的 Buffers 对 buffer 进行操作。 也可以使用 SPC < 打开 buffer 列表来切换 buffer。

frame

每个物理的窗口,是一个 frame。 Emacs 可以生成多个 frame。
由于 frame 操作不常用,Doom Emacs 没有配置使用 SPC 来控制 frame 的方式 ,需要使用一个比较难记的按键前缀 C-x 5 来控制 frame。 如果你确实有经常使用 frame 的需求,可以自定义 frame 的快捷键。
下图中,给 Emacs 开了五个 frame:

Doom Emacs 简介

window

每个 frame 都可以分割成多个 window。
可以使用 SPC w 或者 C-w 对 window 进行操作。 这两个按键的效果是一样的,只是 C-w 在 INSERT 模式下面也可以使用。
下图中,开了四个 window,分别显示文件树、文件内容、变量列表和 Terminal。

Doom Emacs 简介

major mode

每个 buffer 都对应一个主模式。 例如打开一个 .py 扩展名的文件,emacs 会自动设置此 buffer 为 python 主模式。
每个主模式下面,按键都有不同的含义。 可以使用 C-c 或者 SPC m 查看主模式下面提供的各种命令。
每个 buffer 只能对应一个主模式。 在 window 的下方的一个横条(叫做 mode line)上,会显示当前 window 的 buffer,major mode 等一些信息。

minor mode

每个 buffer,都可以打开很多个小模式。 小模式可以在主模式的基础上提供更多的功能。
例如,可以使用 SPC t l 控制关于行号显示的小模式,来开关行号显示。
可以使用 SPC h m 来查看当前打开的所有小模式。

project

emacs 会自动把一些特定的目录(例如一个 git 仓库,一个含有 bundler 文件的 ruby 仓库等)自动识别为一个 project。
你也可以在一个目录下面创建一个空的文件 .projectile 来让 emacs 识别这个目录为一个 project。
有 project 的好处是你可以将一些命令控制在当前 project 当中,例如 SPC / p 可以在当前 project 下面进行内容搜索, SPC p / 可以 在当前 project 下面进行文件搜索。
你可以使用 SPC p p ,从各种不同的 project 之间相互切换。 emacs 会给每个 project 单独开一个 workspace。

workspace

如果你需要在众多项目之间切换,你可以使用多个 workspace。 每个 workspace 都可以有自己的一组 window。 例如 workspace 1 可以是两个垂直分割的 window,workspace 2 则是一个大 window。 可以使用 SPC TAB 管理和切换 workspace。
你可以将这个 workspace 保存成文件( SPC TAB s ),将来可以重新加载( SPC TAB l )。

session

在 Doom  Emacs 退出的时候,会自动保存当前的 session 状态,包括 workspace 信息,所有的 buffer 信息和光标位置,下次打开时,可以使用 SPC q l 恢复之前的状态。

server 和 client

Doom Emacs 会自动开启 Emacs server。
在命令行下,你可以使用 emacsclient -n filename 来调用 Emacs server 打开文件。这样你系统里面就可以只需要开启一个 Emacs 进程,不需要开很多个。
通过这种方式,你可以在命令行下面快速调用 Emacs 打开文件,甚至可以将你的 $EDITOR 环境变量设置成 emacsclient -n 来使得 crontab 等各种编辑都自动打开 emacs。

Doom Emacs 的基本使用

Doom Emacs 的管理命令

Doom Emacs 的管理必须使用命令行进行。
~/.emacs.d/bin/doom help   获取所有可用的命令。 常用的命令包括 doom upgrade 升级 Doom Emacs, doom update 升级所有插件, doom doctor 检查系统有没有问题。 建议经常执行   doom doctor 检查系统。

Doom Emacs 的基本操作

执行命令

  • 大部分命令都可以按空格 SPC 获取
  • 也可以使用 M-x 再输入命令名称的方式来执行命令
  • 还可以打开菜单栏( M-x menu-bar-mode ),点击菜单来执行命令

获取帮助

  • 可以使用 SPC h k < 按键 > 来查看某个按键的具体含义
  • 可以使用 SPC  h f < 命令 > 来查看某个命令的具体含义
  • 可以使用 SPC h I 来查看 Emacs 的所有文档
  • SPC h 按键序列下还有其他大量的帮助命令

编程

不同编程语言提供的功能不一定相同。 这里以 python 为例:
  • SPC c 有编程相关的控制,例如 SPC c e 可以执行当前文件
  • SPC m 有编程相关的编辑功能,例如 SPC m I m 可以自动将当前光标所在处的函数所需要的 import 补充好。
  • g 提供了跳转功能,例如 gd 跳转到当前光标所在函数或者变量的所有引用, gf 跳转到当前光标所在位置对应的文件等。
  • 可以使用 SPC / 进行查找和搜索,例如 SPC / i 进行函数跳转, SPC / b 在当前 buffer 进行搜索等。
  • 使用 z 来做代码折叠。

Doom Emacs 的模块

模块简介

Doom Emacs 是模块化的,配置被分成了众多的模块。
例如,如果你需要经常编辑 python 文件,你可以开启 python 模块,这样 Doom Emacs 会自动帮你安装 python 相关的一些插件并且做相关配置。 如果你不需要编辑 python,你可以不开启 python 模块,这样就不会安装这些插件了,可以节省空间,加快速度。
模块本身还可以有选项。 例如,python 模块有个选项, +ipython ,如果打开了 python 模块,并且打开了这个选项,那么除了安装 python 相关的插件之外,还会安装 ipython 相关的插件。
开启哪些模块,每个模块使用哪些选项,在配置文件 ~/.doom.d/init.el 中定义。 你可以在 Doom Emacs 中使用快捷键 SPC f P 来快速打开这个配置文件。
当修改了模块配置之后,可能会导致需要安装新的插件,加载新的模块配置。你需要执行以下命令来刷新插件和配置:
1~/.emacs.d/bin/doom refresh

常用模块说明

Doom Emacs 将模块分成了不同的分组。每个模块都有文档,文档在 ~/.emacs.d/modules/< 分组名 >/< 模块名 >/ 下面,建议阅读。

input

输入法相关,目前包含中文和英文输入法。使用C-\可以切换输入法。

completion

自动补全相关。包括:

  • company 自动补全工具。建议一定要打开。如果使用的是 Emacs 26 以上的版本,建议打开 +childframe 开关:

    1(company +childframe)


Doom Emacs 简介

  • helm ivy ido   这三个都是搜索工具,只需要开启一个即可。 这三个工具功能是类似的,不同人有不同的喜好。 本文作者使用的是 ivy,并且开启了 +icons (显示文件图标)和   +fuzzy (支持模糊搜索) 这两个开关。 ivy 和 helm 都支持 +fuzzy ,建议打开,这样就可以模糊搜索啦。
    开启之后,所有的文件搜索、命令搜索、代码搜索等功能,均会由搜索工具接管。 例如执行 SPC / p 搜索项目时,在最下方的 mini buffer 出现的搜索,就是搜索工具控制的。 如果使用的是 ivy 的话,可以使用 C-n C-p 上下翻页,使用 Enter 选择。

Doom Emacs 简介

这些搜索工具需要调用一些后端的搜索命令。以 ivy 为例,你需要在操作系统中安装 ripgrep 和 the_silver_searcher 这两个内容搜索工具来让 ivy 调用来搜索文件并展示。

ui

这里都是一些显示相关的模块,比较多,不再一一说明,保持默认即可,列出一些可能需要修改的:
  • doom-quit 在退出 Emacs 的时候弹出随机的提示语。如果嫌烦可以关掉。
  • fill-column 显示提示符,避免一行变得太长(默认在第 80 列显示)
  • ident-guides 显示缩进提示
  • pretty-code 将一些符号显示得更「漂亮」,例如把 for i in array 显示成 ∀ i ∈ array 。装逼用,不改变实际文件内容。
    这是一个 pretty 之后的效果图

Doom Emacs 简介

  • treemacs 显示项目的文件树,使用 SPC o p 触发。
    这是一个 pretty 之后的效果图

Doom Emacs 简介

editor

比较多,列出一些比较重要的
  • evil 打开之后,Emacs 会使用 vim 的编辑模式
  • file-templates 打开新文件时的模板。
  • fold 代码折叠
  • format 代码自动格式整理
  • multiple-cursors 多光标编辑,可以按照规则生成多个光标,输入任何命令在所有光标处生效
  • snippets 快速输入。定义了大量的模板来帮助快速输入一些常见的格式。例如在 python 代码下面 输入 ifmain 然后再敲 TAB 则立刻输出
    1if __name__ == '__main__'
    2    pass
    并且将光标放在 pass 的位置。
    所有的模板可以在 https://github.com/hlissner/emacs-snippets 找到,也支持自定义自己的 snippets,使用 SPC s 可以管理 snippet。

emacs

emacs 自带的一些功能
  • dired 文件管理工具,可以使用 SPC o - 打开。
    该工具内容极为强大,能写一本书,建议大家自行查阅它的手册,或者打开 Emacs 的菜单( M-x menu-bar-mode ),使用菜单来熟悉它的各项功能。本文作者最喜欢它可以使用正则表达式规则来批量重命名文件的功能。
    最基本的使用方法:使用 j k 移动文件, Enter 进入子目录或者打开文件, - 或者 ^ 跳转上一层目录, gr 刷新当前目录内容。
    默认 dired 是不会做自动内容刷新的(比如新建了一个目录,要按一下 gr 来刷新才能看到这个目录),可以修改配置让它自动刷新。

    Doom Emacs 简介

  • vc
    版本管理工具,会自动识别。在编辑文件时,每一行的状态会在每一行的最左边用色块的方式显示。蓝色表示有修改,绿色表示是新增,红色的小三角表示有删除。使用 C-x v 可以触发它的一些其他功能。

Doom Emacs 简介


如果使用的是 git 作为版本管理工具的话,建议配合下面的 magit 使用

term

在 Emacs 中打开 terminal。有三个,作用不同:
  • eshell 使用 emacs lisp 编写的 shell,使用起来和 bash 基本相似,但是不完全相同。在特定场合会比 bash 强大(例如可以直接在命令中内嵌 lisp 函数)。 SPC o E 在新 buffer 中打开, SPC o e 在下方弹出。
  • term 和 vterm,是两个使用 bash 的 shell,使用起来和 bash 完全相同,两个功能完全相同,只开启一个即可,其中 vterm 功能更强大但是安装过程比较复杂。如果要使用 vterm 请阅读模块文档确认如何安装。 SPC o T 全屏打开, SPC o t 在下方弹出。

Doom Emacs 简介

tools

各种工具,特别多,不再一一列出,说一些比较重要的
  • flycheck 语法检查。使用 SPC t f 开关,可以使用 SPC c x 列出所有错误
  • flyspell 拼写检查。使用 SPC t s 开关
  • magit 这是功能非常强大好用的 git 管理工具。
    使用 SPC g 触发它的各种功能,其中最重要和最常用的是使用 SPC g g 来显示 git 状态。打开 git 状态之后可以按 h 获取帮助。该工具的手册有几百页,此处无法详细描述,建议大家自行查阅手册和查看帮助。
    在使用 SPC g g 打开 git 状态之后,一些常用按键:
一些常用按键:
  • h 获取帮助
  • TAB 打开或折叠详细信息
  • s 为 stage(相当于 git add)
  • c 为 commit
  • q 退出 magit

Doom Emacs 简介

  • make 在 Emacs 中快速编译

  • lsp 这是微软推出的 language server protocol。该工具也是一个庞大的主题,可以专门写一篇文章,后续笔者再写一篇文章详细介绍它。

lang

各种编程语言的支持。根据你平时需要的,做针对性打开即可。其中值得注意的一些:
  • cc 这个模块是一个通用模块,是一个所有类 C 语言的通用模块。可以用于 C/C++/Obj-c 等。

  • org 这是 Emacs 自带的一个非常强大和庞大的语言。orgmode 的手册有三百多页,功能极多:

    1. 它是一个类似于  MarkDown 的文档格式,可以转换成各种其他格式
    2. 它是一个非常强大的管理工具,可以用来管理笔记、日程、日记、财务等各种信息
    3. 它是一个非常强大的文学编程工具。文学编程绝对是一种可以刷新你三观的独特的编程方法

orgmode 的众多功能之冰山一角:文学编程

Doom Emacs 简介

orgmode 拥有大量的功能,强烈建议大家认真学习它。https://github.com/marboo/orgmode-cn 这里有 orgmode 的中文教程。下载这个教程里面的 org.org 文件并且在 Emacs 中打开它来学习(可以跳过安装和激活的部分,因为 Doom Emacs 已经帮你自动安装和激活好啦)
  • plantuml 这是一个非常强大的画图工具,支持时序图、用例图、甘特图、脑图、网页原型等大量的图形。

    Doom Emacs 简介

  • rest 这是 restful API 的客户端。结合 org 使用效果会非常好,做网络调试很方便。

    Doom Emacs 简介

  • web 编辑 html/css/javascript 等 web 相关的语言。

email

邮件客户端。此处略

app

一些应用。此处略

config

  • default 这个模块做了一些默认配置,例如各种按键配置等。

其他部分 Emacs 自带的功能

Emacs 的功能实在是太多太多了,介绍不完,这里介绍几个比较好玩一点的

游戏

Emacs 内置多款游戏。可以在菜单的 Tools -> Games 中找到,也可以直接M-x调用游戏名称。

例如,M-x tetris就可以玩俄罗斯方块啦

Doom Emacs 简介

ediff

M-x ediff 可以进入 ediff 工具来对比两个文件。还可以使用 ediff3 来对比三个文件,或者 ediff-files 来对比任意多个文件。
打开 ediff 之后,Emacs 会拆分三个窗口,左边是文件 A,右边是文件 B,下面一个很矮的长条形窗口是 ediff 的管理窗口。
当光标焦点在文件 A 或者文件 B 时,可以正常编辑文件。
当光标焦点在管理窗口的时候,可以使用 ediff 的命令。按 ? 可以获取命令列表。最常用的是:
  • n p 跳转到下一个或上一个 diff
  • a b 将文件 A 的当前 diff 拷贝覆盖到文件 B,或者将文件 B 的当前 diff 拷贝覆盖到文件 A
  • q 退出 ediff 模式

calc

Emacs 自带一个极其强大的计算器。并且这个计算器可以和 orgmode 配合使用,甚至还可以用于编辑表格的时候用作单元格计算的公式。
这个计算器功能简直无所不包。从单位换算,代数运算,微积分,等等等等,什么都能做。
  • https://github.com/ahyatt/emacs-calc-tutorials 这里有个 calc 的教程(英文)
  • https://github.com/lujun9972/emacs-document/tree/master/calc 这里有几个简短的中文 calc 教程

Doom Emacs 简介

自定义 Doom Emacs

自定义 Doom Emacs 已经远远超出了本文的范围,本文只给一个简单的例子,供大家参考,顺便演示一下 Doom Emacs 的一些常见操作,建议大家照着操作一遍,来熟悉 Doom Emacs 的用法。更多的配置请查看 Doom Emacs 的帮助文档,也可以参考笔者自己的配置 https://github.com/SteamedFish/dotfiles/tree/master/.doom.d 。
在这个例子中,我们的目标是给 Doom Emacs 增加一个新的插件,https://github.com/xuchunyang/youdao-dictionary.el ,让 Doom Emacs 可以通过按 SPC h y 来通过有道词典查询当前光标下的单词(该功能需要 Emacs 26.1 以上版本):

Doom Emacs 简介

  • 首先按 SPC o - 或者 SPC f d 打开 dired 并且移动到 ~ 目录。
  • / 搜索,输入 .doom.d ,然后按 Enter (你也可以不搜索而是通过移动光标的方式) 定位到 ~/.doom.d/ 目录
  • Enter 进入该目录
  • + ,然后输入 modules/mytools/youdao 并按 Enter ,这样就创建了一个目录。如果看不到这个新建的目录,可以按 gr 刷新一下。
  • 进入我们创建的 modules/mytools/youdao 目录。按 SPC . 来打开文件列表,输入 packages.el 并回车,创建这个文件并编辑。
  • 在打开的文件的最后面,追加这样的一行,然后按 :w 或者 SPC b s 保存文件
            
              
              
            
    1(package! youdao-dictionary)
  • 再次按 SPC . 来打开文件列表,这次我们输入 config.el 并回车,创建这个文件并编辑。
  • 在打开的文件的最后面,追加以下内容,来配置这个模块的行为:
    1(use-package! youdao-dictionary
    2  :config
    3  (map!
    4   :leader
    5   :prefix ("h" . "help")
    6   :desc "Lookup Dictionary"    :n "y"  #'youdao-dictionary-search-at-point-tooltip))
  • SPC f P 然后输入 ini Enter 打开 ~/.doom.d/init.el 文件。在模块列表最下面增加我们刚创建的模块:
    1:mytools
    2youdao
  • SPC o t 打开弹出的 terminal(假定你启用了 term 或者 vterm 模块,如果你没有启用这些模块,你需要打开 terminal),然后执行 ~/.emacs.d/bin/doom refresh
  • SPC h r r 重新加载配置
这样,我们的插件就配置成功了。

进一步学习 Emacs

  • Emacs China 论坛 https://emacs-china.org

    Doom Emacs 简介

  • Emacs China Telegram 聊天室 https://t.me/emacszh

    Doom Emacs 简介

  • Doom Emacs 官方文档 https://github.com/hlissner/doom-emacs/wiki

    Doom Emacs 简介

  • Emacs 的一些中文教程 https://github.com/lujun9972/emacs-document

往期精彩















以上是关于Doom Emacs 简介的主要内容,如果未能解决你的问题,请参考以下文章

DOOM启世录 PDF下载

DOOM启世录 pdf 下载

Emacs编辑器简介

讲清楚,说明白!Vim编辑器简介

阿里录制回放平台(Doom)试用记录(未完待续)

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段