核心快捷键前缀

在 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 确认一个快捷键对应什么功能。

按键用途备注
SPCleader,进入 Doom Emacs 主功能菜单emacs-state 和 insert-state 下使用 M-SPC
M-x进入扩展命令输入界面
C-xC-x 系列命令菜单,一般是全局命令
C-cC-c 系列命令菜单,一般是 mode 特定的命令
C-hC-h 系列帮助菜单非常有用
SPC c+code
SPC p+project
SPC s+searchs-f 是 swiper 功能
SPC f lLocate file使用 locate 命令定位文件
SPC f rRecent files
C-h tLoad themeSPC h 或者 C-h 进入帮助菜单
C-s-ftoggle-frame-fullscreennormal 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-cvterm-send-C-c
C-c C-gvterm-send-C-g
C-c C-tvterm-copy-mode类似进入 Screen、Tmux 的复制模式
C-c C-zevil-collection-vterm-toggle切换 ESC 按键是送给 vterm 还是送给 Emacs

workspace

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

按键用途备注
C-c ppersp-mode 快捷键前缀
s-T, SPC TAB TAB+workspace/display展示复用了 mini buffer 位置的 workspace 标签栏。normal state 可使用 C-S-t。
s-t, SPC TAB n+workspace/newnormal state 可使用 C-t。
SPC TAB d+workspace/delete
SPC TAB r+workspace/rename也可以用 C-c p r。
SPC TAB o+workspace/otherswitch to the last activated workspace
M-0, SPC TAB 0+workspace/switch-to-finalnormal 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 1delete-other-window
C-x 2split-window-below
C-x 3split-window-right
C-x oother-window
C-x 4 ffind-file-other-window
C-x 4 ddired-other-window
C-x 4 bswitch-to-buffer-other-window