NakanoMiku39
Articles3
Tags8
Categories0

Archive

Emacs实用插件分享

Emacs实用插件分享

Emacs 是一个强大的可扩展文本编辑器,其真正的力量来自于丰富的插件生态。今天我来分享一些我日常使用中非常实用的插件。我的完整配置文件可以在 GitHub 上找到。

AIGC:这篇文章由AI生成

包管理器:straight.el + use-package

我的配置使用 straight.el 作为包管理器,配合 use-package 来组织配置。这是一个现代且强大的组合:

1
2
3
(setq straight-use-package-by-default t)
(straight-use-package 'use-package)
(require 'use-package)

优点:

  • straight.el 直接从源代码安装,不依赖 MELPA 包列表
  • use-package 提供声明式配置,按需加载提升启动速度

1. 补全系统

Vertico + Orderless + Marginalia

这是 Emacs 现代化的补全铁三角:

1
2
3
4
5
6
7
8
9
10
11
12
;; 垂直补全界面
(use-package vertico
:init (vertico-mode))

;; 无序模糊搜索
(use-package orderless
:custom
(completion-styles '(orderless)))

;; 补全注解
(use-package marginalia
:init (marginalia-mode))

优点:

  • vertico:垂直显示补全候选项,界面清爽
  • orderless:支持任意顺序的关键字匹配,非常灵活
  • marginalia:在补全列表旁显示文档和类型信息

2. 搜索与导航

Consult

增强的文件内搜索和跳转:

1
2
3
4
(use-package consult
:bind
("M-s" . consult-line) ;; 当前文件搜索
("C-c g" . deadgrep)) ;; 项目内全局搜索

优点:

  • 比内置 isearch 更强大,支持预览
  • 集成 ripgrep 实现项目级搜索
  • 支持中文搜索配置

Avy

快速跳转到任意字符:

1
2
3
(use-package avy
:bind
(("M-j" . avy-goto-char-timer)))

优点:

  • 无需鼠标即可跳转到屏幕任意位置
  • 输入几个字符即可快速定位

Ace-window

快速窗口切换:

1
2
(use-package ace-window
:bind (("C-x o" . 'ace-window)))

优点:

  • 将每个窗口标记为字母,按字母即可切换
  • 多窗口工作时效率极高

3. Git 集成

Magit

可能是 Emacs 中最强大的 Git 界面:

1
2
(use-package magit
:defer 2)

优点:

  • 完整的 Git 功能支持,比命令行更直观
  • 交互式的 staging、commit、rebase
  • 内置 diff 和 blame 查看

Git-gutter

在 buffer 中显示修改标记:

1
2
(use-package git-gutter
:hook (prog-mode . git-gutter-mode))

优点:

  • 实时显示新增、删除、修改的行
  • 无需离开当前文件即可了解改动

4. 编辑增强

Company

代码自动补全:

1
2
3
4
5
6
7
8
9
10
(use-package company
:init (global-company-mode t)
:config
(setq company-minimum-prefix-length 2) ; 输入 2 字符后触发
(setq company-idle-delay 0.2) ; 延迟 0.2 秒
(setq company-show-numbers t)) ; 显示序号

(use-package company-box
:if window-system
:hook (company-mode . company-box-mode))

优点:

  • 轻量级,支持多种后端
  • company-box 提供现代化的图标和文档弹窗

Vundo

可视化撤销历史:

1
2
3
4
(use-package vundo
:bind ("C-x u" . vundo)
:config
(setq vundo-glyph-alist vundo-unicode-symbols))

优点:

  • 树状展示撤销历史,分支清晰可见
  • undo-tree 更轻量,无需额外依赖

Multiple-cursors

多光标编辑:

1
2
3
(use-package multiple-cursors
:bind
("C-S-<mouse-1>" . mc/toggle-cursor-on-click))

优点:

  • 同时编辑多处相同内容
  • 按住 Ctrl+Shift 点击即可添加光标

Evil-nerd-commenter

快速注释:

1
2
(use-package evil-nerd-commenter
:bind ("M-;" . evilnc-comment-or-uncomment-lines))

优点:

  • 智能判断注释或取消注释
  • 支持多种语言的注释格式

5. 视觉增强

Doom-themes + Doom-modeline

美观的主题和状态栏:

1
2
3
4
5
6
7
8
(use-package doom-themes
:config
(setq doom-themes-enable-bold nil
doom-themes-enable-italic t)
(load-theme 'doom-dracula t))

(use-package doom-modeline
:init (doom-modeline-mode t))

优点:

  • doom-dracula 主题配色舒适,长时间编码不累眼
  • doom-modeline 现代化状态栏,信息显示丰富

Rainbow-delimiters

彩虹括号:

1
2
(use-package rainbow-delimiters
:hook (prog-mode . rainbow-delimiters-mode))

优点:

  • 不同层级的括号显示不同颜色
  • 极大提升嵌套代码的可读性

Rainbow-mode

显示颜色代码的实际颜色:

1
2
(use-package rainbow-mode
:hook (prog-mode . rainbow-mode))

优点:

  • CSS 开发神器
  • 支持 hex、rgb、hsl 等格式

Hl-todo

高亮 TODO 等关键词:

1
2
3
4
5
6
7
8
(use-package hl-todo
:hook (prog-mode . hl-todo-mode)
:config
(setq hl-todo-keyword-faces
'(("TODO" . "#FF0000")
("FIXME" . "#FF0000")
("NOTE" . "#00FF00")
("HACK" . "#FF00FF"))))

优点:

  • 醒目的颜色标记待办事项
  • 支持自定义关键词和颜色

Focus

专注模式:

1
(use-package focus)

优点:

  • 高亮当前段落/函数,淡化其他内容
  • 帮助集中注意力

6. 文件与项目管理

Dirvish

增强版文件管理器:

1
2
3
(use-package dirvish
:hook (after-init . dirvish-override-dired-mode)
:bind (("C-x d" . dirvish)))

优点:

  • dired 更现代化
  • 支持文件预览、图片缩略图

Projectile

项目管理:

1
2
3
4
5
6
(use-package projectile
:bind (("C-c p" . projectile-command-map)))

(use-package counsel-projectile
:after (projectile)
:init (counsel-projectile-mode))

优点:

  • 自动识别项目根目录
  • 快速切换项目文件、搜索项目内容

Treemacs

文件树侧边栏:

1
2
3
4
5
(use-package treemacs
:defer t
:bind
(("M-0" . treemacs-select-window)
("C-x t t" . treemacs)))

优点:

  • 类似 VS Code 的文件树
  • 支持 LSP 符号树集成

7. 开发工具

LSP 客户端

支持 Eglot 或 lsp-mode:

1
2
3
4
5
6
7
8
9
10
11
;; 轻量级方案:Eglot
(use-package eglot
:hook
((c-mode c++-mode rust-mode python-mode) . eglot-ensure)
:config
(setq eglot-autoshutdown t))

;; 或功能丰富的 lsp-mode
(use-package lsp-mode
:commands lsp
:hook (scala-mode . lsp))

优点:

  • 完整的 IDE 功能:跳转定义、自动补全、重构
  • 支持几乎所有主流语言

Flycheck

语法检查:

1
2
(use-package flycheck
:init (global-flycheck-mode))

优点:

  • 实时语法错误提示
  • 支持多种语言的 linter

Treesit-auto

Tree-sitter 语法高亮:

1
2
3
4
(use-package treesit-auto
:config
(setq treesit-auto-install 't)
(global-treesit-auto-mode))

优点:

  • 比传统正则高亮更精确
  • 语法错误更易发现

8. 启动与界面

Dashboard

自定义启动页:

1
2
3
4
5
6
7
8
9
(use-package dashboard
:init
(setq dashboard-banner-logo-title "安和すばるで一す、よろしくね!")
(setq dashboard-startup-banner "banners/logo.jpeg")
(setq dashboard-items '((recents . 10)
(bookmarks . 5)
(projects . 10)))
:config
(dashboard-setup-startup-hook))

优点:

  • 显示最近文件、项目、书签
  • 可自定义欢迎图片和文字

Which-key

按键提示:

1
2
(use-package which-key
:init (which-key-mode))

优点:

  • 输入前缀键后显示可用命令
  • 学习新快捷键的神器

9. 性能优化

GCMH

垃圾回收优化:

1
2
(use-package gcmh
:init (gcmh-mode 1))

优点:

  • 减少 Emacs 卡顿
  • 自动调整 GC 策略

结语

以上是我 Emacs 配置中最常用的一些插件。Emacs 的魅力就在于其无限的可定制性,你可以根据自己的工作流选择和组合插件。

完整的配置文件和最新更新请访问我的 GitHub 仓库

希望这份分享对你有帮助,祝编码愉快!

Author:NakanoMiku39
Link:http://nakanomiku39.github.io/2026/03/04/Emacs%E5%AE%9E%E7%94%A8%E6%8F%92%E4%BB%B6%E5%88%86%E4%BA%AB/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可