Skip to content

Instantly share code, notes, and snippets.

@JaHIY
Last active August 24, 2025 06:55
Show Gist options
  • Save JaHIY/727d41cf811a350d75b893214d697e8d to your computer and use it in GitHub Desktop.
Save JaHIY/727d41cf811a350d75b893214d697e8d to your computer and use it in GitHub Desktop.
minimal emacs config
;;; -*- mode: emacs-lisp; coding: utf-8-unix -*-
;;;; 1. 核心性能优化
(setq inhibit-startup-screen t) ; 禁用欢迎页
(setq initial-scratch-message nil) ; 清空 *scratch* 内容
(setq gc-cons-threshold 100000000) ; 提升 GC 阈值加速启动
(setq read-process-output-max (* 4 1024)) ; 增加进程输出缓存
(fset 'yes-or-no-p 'y-or-n-p) ; 用 y/n 替代 yes/no
;;;; 2. 编码与字符集
(prefer-coding-system 'utf-8-unix) ; 强制 Unix 风格 UTF-8
(set-default-coding-systems 'utf-8-unix)
(setq default-buffer-file-coding-system 'utf-8-unix)
(set-language-environment "UTF-8")
;;;; 3. 字体配置(兼容图形界面与命令行)
(defvar my/cjk-font-size-offset 2) ; 中文字体比英文字体大2pt
(cond
((eq system-type 'windows-nt) ; Windows配置
(setq my/default-font-size 14
my/fixed-pitch-font "Consolas"
my/cjk-monospace-font "Microsoft YaHei Mono"
my/cjk-proportional-font "Microsoft YaHei"))
((eq system-type 'gnu/linux) ; Linux配置
(setq my/default-font-size 14
my/fixed-pitch-font "DejaVu Sans Mono"
my/cjk-monospace-font "Sarasa Mono SC"
my/cjk-proportional-font "Source Han Sans CN")))
;; 图形界面字体设置
(when (display-graphic-p)
;; 设置英文字体
(set-face-attribute 'default nil
:font (format "%s-%d" my/fixed-pitch-font my/default-font-size))
;; 等宽中文配置
(dolist (charset '(kana han cjk-misc bopomofo))
(set-fontset-font t charset
(font-spec :family my/cjk-monospace-font
:size (+ my/default-font-size my/cjk-font-size-offset))
nil 'prepend))
;; 文本模式下启用变宽中文
(defun my/set-proportional-cjk ()
(dolist (charset '(kana han cjk-misc bopomofo))
(set-fontset-font t charset
(font-spec :family my/cjk-proportional-font)
nil 'append)))
(add-hook 'text-mode-hook #'my/set-proportional-cjk))
;;;; 4. 显示与界面优化
;; 行号与列号(内置功能)
(global-display-line-numbers-mode t) ; 全局显示行号
(setq display-line-numbers-type 'relative) ; 相对行号(可选)
(column-number-mode t) ; 状态栏显示列号
;; 高亮辅助
(show-paren-mode t) ; 括号匹配高亮
(setq show-paren-style 'expression) ; 高亮整个表达式
(global-hl-line-mode t) ; 高亮当前行
(setq hl-line-face '(:underline "gray")) ; 下划线替代背景色(终端友好)
;; 时间与状态栏
(display-time-mode t) ; 显示时间
(setq display-time-24hr-format t) ; 24 小时制
;;;; 5. 编辑增强(内置功能)
;; 缩进与空白
(setq-default indent-tabs-mode nil) ; 禁用制表符,全用空格
(setq default-tab-width 4) ; Tab 宽度 = 4 空格
(setq backward-delete-char-untabify-method 'hungry) ; 删除时清理空格
(setq-default show-trailing-whitespace t) ; 高亮行尾多余空格
;; 键位绑定(兼容终端)
(global-set-key (kbd "C-z") 'undo) ; Ctrl+Z 撤销
(global-set-key (kbd "C-x C-b") 'ibuffer) ; 增强缓冲区列表
(global-set-key (kbd "C-w") 'kill-region) ; 剪切选中文本
(global-set-key (kbd "M-w") 'kill-ring-save) ; 复制选中文本
(global-set-key (kbd "C-c C-c") 'comment-region) ; 注释选区
(global-set-key (kbd "C-c C-u") 'uncomment-region) ; 取消注释
;; 字体缩放快捷键
(global-set-key (kbd "C-c +") 'text-scale-increase)
(global-set-key (kbd "C-c -") 'text-scale-decrease)
;; 滚动优化
(setq scroll-conservatively 101) ; 滚动时保持光标稳定
(setq mouse-wheel-scroll-amount '(1)) ; 鼠标滚轮逐行滚动
;;;; 6. 文件与备份(服务器优化)
(setq make-backup-files nil) ; 禁用自动备份
(setq auto-save-default nil) ; 禁用自动保存
(setq create-lockfiles nil) ; 禁用锁文件(避免多用户冲突)
;;;; 7. 命令行特化配置
(when (not (display-graphic-p))
(menu-bar-mode -1) ; 终端禁用菜单栏
(tool-bar-mode -1) ; 终端禁用工具栏
(scroll-bar-mode -1)) ; 终端禁用滚动条
;;;; 8. 模式钩子扩展示例
;; 编程模式通用设置(如 Python/C++)
(add-hook 'prog-mode-hook
(lambda ()
(electric-indent-local-mode -1) ; 关闭自动缩进(避免冲突)
(setq truncate-lines t))) ; 禁止自动折行(代码友好)
;; 文本模式(如 Markdown/Org)
(add-hook 'text-mode-hook
(lambda ()
(auto-fill-mode t) ; 自动折行
(setq fill-column 80))) ; 行宽限制 80 字符
;;;; 9. 配色方案配置(内置主题)
;;; 覆盖 modus-vivendi 调色板以模拟 Monokai 风格 [3,7](@ref)
(setq modus-vivendi-palette-overrides
'(
;; 基础色调(Monokai 深灰背景 + 浅灰前景)
(bg-main "#282C34") ; 主背景色 (Monokai 深灰)
(fg-main "#ABB2BF") ; 主前景色 (浅灰)
(bg-mode-line "#3E4451") ; 模式线背景 (Monokai 灰蓝)
(fg-mode-line "#E5C07B") ; 模式线前景 (浅黄)
;; 语法高亮关键色
(lang-keyword "#C678DD") ; 关键字 (紫) -> Monokai 紫色
(lang-type "#61AFEF") ; 类型 (蓝) -> Monokai 蓝色
(lang-comment "#5C6370") ; 注释 (灰) -> Monokai 灰(比原版略深)
(lang-string "#98C379") ; 字符串 (绿) -> Monokai 绿色
(lang-constant "#D19A66") ; 常量 (橙) -> Monokai 橙色
(lang-function "#E5C07B") ; 函数名 (黄) -> Monokai 黄色
(lang-warning "#E06C75") ; 警告 (红) -> Monokai 红色
;; 特殊元素
(line-number-active "#ABB2BF") ; 活动行号 (浅灰)
(line-number-inactive "#5C6370") ; 非活动行号 (深灰)
(border "#3E4451") ; 边框色 (Monokai 灰蓝)
))
;; 启用 modus-themes(Emacs 30.2 内置)
(load-theme 'modus-vivendi t) ; 默认深色模式
;;; 补充 Monokai 特色细节(通过自定义覆盖)
(custom-set-faces
;; 当前行高亮 (Monokai 的深黑背景)
`(hl-line ((t (:background "#1B1D1E"))))
;; 括号匹配高亮 (Monokai 橙色)
`(show-paren-match ((t (:background "#D19A66" :foreground "black"))))
;; 搜索高亮 (Monokai 金色)
`(isearch ((t (:background "#FFB269" :foreground "black"))))
;; 行号模式 (Monokai 风格斜体注释)
`(line-number ((t (:inherit default :foreground "#5C6370" :slant italic)))))
;; 终端模式特化:禁用图形主题依赖
(when (not (display-graphic-p))
(setq modus-themes-disable-other-themes t)) ; 确保终端兼容性
;; 语法高亮增强
(setq modus-themes-bold-constructs t ; 关键字加粗
modus-themes-italic-constructs t ; 注释斜体
modus-themes-region 'bg-only) ; 选区高亮仅背景
;;; 初始化完成
(provide 'init)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment