核心快捷键前缀

在 Doom Emacs 中按快捷键前缀时会提示接下来可能的按键说明,非常方便。快捷键修饰符如下:

  • SPC 表示 Space
  • C- 表示 Ctrl
  • M- 表示 Meta or Alt or Option
  • S- 表示 Shift
  • s- 表示 Super or Command or Win

跟 Spacemacs 一样,Doom Emacs 也默认开启了 evil 模式来模拟 VI 的编辑体验,需要在插入等状态下按 ESC 回到 normal state,所有 SPC 开头的快捷键都要退出 emacs-state 和 insert-state 才能使用,在这两个状态里可以用 M-SPC 前缀避免模式切换。

M-x, C-x, C-c, C-h 这四组快捷键可以在所有状态里使用,但要注意当前 buffer 使用的编辑模式(mode)可能重新绑定了快捷键,可以用 C-h k 确认一个快捷键对应什么功能。

按键 用途 备注
SPC leader,进入 Doom Emacs 主功能菜单 emacs-state 和 insert-state 下使用 M-SPC
M-x 进入扩展命令输入界面
C-x C-x 系列命令菜单,一般是全局命令
C-c C-c 系列命令菜单,一般是 mode 特定的命令
C-h C-h 系列帮助菜单 非常有用
SPC c +code
SPC p +project
SPC s +search s-f 是 swiper 功能
SPC f l Locate file 使用 locate 命令定位文件
SPC f r Recent files
C-h t Load theme SPC h 或者 C-h 进入帮助菜单
C-s-f toggle-frame-fullscreen normal state 可以用 C-S-f

vterm

根据 emacs-vterm 主页的说法,vterm 是 Emacs 下最好的终端模拟器,搭配 Doom Emacs 推荐emacs-mac, 可以完美显示颜文字。

需要按照 https://github.com/akermu/emacs-libvterm#shell-side-configuration-files 说明配置好 shell,然后使用 vterm_cmd find-file xxx 或者 emacsclient xxx 可以从命令行打开文件到 Emacs 里编辑。

按键 用途 备注
SPC o T +vterm/here 开启一个新的 vterm
SPC o t +vterm/toggle 在 Emacs 窗口底部弹出迷你 vterm 或者隐藏迷你 vterm
C-c C-c vterm-send-C-c
C-c C-g vterm-send-C-g
C-c C-t vterm-copy-mode 类似进入 Screen、Tmux 的复制模式
C-c C-z evil-collection-vterm-toggle 切换 ESC 按键是送给 vterm 还是送给 Emacs

workspace

persp-mode.el 提供类似 Eclipse perspective 或者终端模拟器里标签页的功能,persp-mode 使用 C-c p 快捷键前缀,Doom Emacs 定义了额外的快捷键。

按键 用途 备注
C-c p persp-mode 快捷键前缀
s-T, SPC TAB TAB +workspace/display 展示复用了 mini buffer 位置的 workspace 标签栏。normal state 可使用 C-S-t。
s-t, SPC TAB n +workspace/new normal state 可使用 C-t。
SPC TAB d +workspace/delete
SPC TAB r +workspace/rename 也可以用 C-c p r。
SPC TAB o +workspace/other switch to the last activated workspace
M-0, SPC TAB 0 +workspace/switch-to-final normal state 可使用 s-0.
M-19, SPC TAB 19 +workspace/switch-to-1~9 切换到第一到第九个 workspace。normal state 可使用 s-1~9。

window

Emacs 里基本的多窗口操作快捷键。

按键 用途 备注
C-w, SPC w 窗口操作快捷键前缀 只在 normal state 有效。
C-x + balance-windows
C-x 0, s-w +workspace/close-window-or-workspace
C-x 1 delete-other-window
C-x 2 split-window-below
C-x 3 split-window-right
C-x o other-window
C-x 4 f find-file-other-window
C-x 4 d dired-other-window
C-x 4 b switch-to-buffer-other-window