Doom Emacs 实用技巧

| 分类 emacs  | 标签 doom  emacs 

Doom Emacs 实用技巧

Doom Emacs 是现代化的 Emacs 配置框架,结合 Vim 键位、模块化架构、超快启动速度,适合所有语言开发者。

本文不仅提供 Doom Emacs 的实用技巧总结,还包含 Go、Python、Flutter 三种主流开发语言的配置与插件支持,助你快速搭建属于自己的高效开发环境。


一、Doom Emacs 快速配置回顾

Doom 的核心配置位于 ~/.doom.d/

文件 功能说明
init.el 启用模块(语言、功能、工具)
config.el 日常配置(快捷键、hook 等)
packages.el 安装自定义插件

每次更改后请运行:

doom sync && doom restart

二、通用实用技巧速查

快捷键 功能说明
SPC f f 打开文件
SPC p p 切换项目
SPC b b buffer 切换
SPC / 全局搜索(ripgrep)
SPC g g Magit 打开 Git 面板
SPC c c 编译当前 buffer
SPC w / 垂直分屏
SPC TAB TAB 最近 buffer 切换
SPC h d h 查看光标处帮助

三、Go 开发配置

1. 启用模块

~/.doom.d/init.el 启用:

:lang
(go +lsp)

2. 安装依赖

go install golang.org/x/tools/gopls@latest

可选安装:

go install github.com/go-delve/delve/cmd/dlv@latest

3. 格式化支持(config.el

(after! go-mode
  (setq gofmt-command "goimports")
  (add-hook 'before-save-hook #'gofmt-before-save))

四、Python 开发配置

1. 启用模块

:lang
(python +lsp +pyright +poetry)

2. 安装依赖

推荐使用 pyenv 和 poetry 管理环境:

pip install 'python-lsp-server[all]'
# or
npm i -g pyright

3. 配置格式化工具(可选)

(setq-hook! python-mode +format-with 'black)

五、Flutter 开发配置

Flutter 支持通过 Dart + LSP + flutter 命令组合实现。

1. 启用模块

:lang
(dart +lsp)

:tools
lsp

2. 安装 Flutter SDK 和分析器

flutter doctor
flutter pub global activate devtools

确保 dartflutter 命令在 $PATH 中可用。

3. LSP 服务配置(默认已启)

你可以检查是否启用了 lsp-modelsp-dart

(use-package! lsp-dart
  :after lsp-mode
  :config
  (setq lsp-dart-sdk-dir "~/flutter/bin/cache/dart-sdk"))

4. 开发建议

  • 使用 flutter emulators 启动模拟器
  • Emacs 中运行 DevTools 或通过浏览器打开
  • 热重载建议绑定快捷键:
(map! :leader
      :desc "Flutter Reload" "c r" #'lsp-dart-hot-restart)

六、调试支持(DAP)

Doom Emacs 支持基于 DAP 的调试体验:

:tools
(debugger +lsp)

安装 dap-mode 后即可调试 Go、Python(需 dap-python)、Dart。


七、自定义快捷键示例(config.el)

(map! :leader
      :desc "Open TODO" "o t" (lambda () (interactive) (find-file "~/todo.org"))

      :desc "Format Buffer" "b f" #'format-all-buffer

      (:prefix ("c" . "code")
        :desc "Compile" "c" #'compile
        :desc "LSP Rename" "r" #'lsp-rename)

      (:prefix ("g" . "git")
        :desc "Status" "g" #'magit
        :desc "Blame" "b" #'magit-blame))

八、插件推荐(packages.el)

;; Flutter/Dart
(package! lsp-dart)
(package! hover) ;; Optional GUI debugger

;; Go tools
(package! go-eldoc)

;; Python tools
(package! pip-requirements)

;; UI 优化
(package! doom-themes)
(package! doom-modeline)
(package! rainbow-delimiters)

九、性能建议

  • 删除你不用的模块,例如 :email, :app, :tools debugger
  • native-comp 编译 Emacs(Emacs 28+)
  • 使用 doom build 编译插件
  • 禁用多余的 lsp-ui 特性:
(setq lsp-ui-sideline-enable nil
      lsp-ui-doc-enable nil)

十、参考链接


Doom Emacs 并非只是 Emacs + Vim,而是你高效开发的 终极黑客工作台