Last active
August 24, 2025 06:55
-
-
Save JaHIY/727d41cf811a350d75b893214d697e8d to your computer and use it in GitHub Desktop.
minimal emacs config
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; -*- 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