Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thysrael/emacs.d
my emacs config
https://github.com/thysrael/emacs.d
Last synced: 15 days ago
JSON representation
my emacs config
- Host: GitHub
- URL: https://github.com/thysrael/emacs.d
- Owner: Thysrael
- Created: 2023-10-09T09:07:03.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-26T07:00:10.000Z (2 months ago)
- Last Synced: 2024-11-26T08:18:59.879Z (2 months ago)
- Language: Emacs Lisp
- Size: 443 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
Awesome Lists containing this project
README
#+TITLE: EMO
* 选择
在我结束了大三和保研的事情后,我希望我可以干一些自己想干的事情。配置一款“我自己”的编辑器再次被我提上日程。vscode 和 sublime text 被我早早划去了,没有任何原因,只是不够帅气。但是对于 vim 和 emacs 的选择,却让我纠结了很久,以至于需要写一个段落来坚定自己的心思。
vim 实在是太诱人了:我曾经配置过它;neovide 漂亮的光标移动特效(果冻光标),而且它最近还支持中文了;十分帅气潇洒的多模式编辑;在比较极端的条件下可以应用;因为专注于编辑功能,所以配置的背景知识不需要太多,而且中文教程很多。但是我依然没有选择 vim,这是因为我突然想到,当我就算配置完了 vim,那么我不过收获了一个编辑速度更快的编辑器,就算比 vscode 快,那又如何?我想要一个“我自己”的本质是什么?我虽然不知道“我自己”是什么,但是我知道,现在的我一定不是“我自己”。
emacs 则相反:因为它不只是一个编辑器,更像是一种 *生活方式* (起码是工作方式),所以要花很多时间去了解各个方面;它的 GUI 和中文支持并不太好,我还记得我花了很长时间去配置字体等宽和输入法;键绑定永远的痛,默认快捷键和熟悉的 CUA 模式完全不一样,而且相比于 vim 还很对手指不友好、没有逻辑、还很难按;甚至启动时间也很慢,我看网上说甚至连大文本文件的处理也不如 vim 性能好。
但是我还是想使用 emacs,我觉得 emacs 对我而言,是一种更多的 *可能性* 。
* 配置架构
正是遵循上文提出的思想,我将我的配置按照工作的场景来划分为不同模块。正因为不同模块对应不同场景,也就是不同需求,所以这样组织的配置,既有逻辑性,又有独特性:** 通用设置(general)
这种设置是通用的,不区分工作环境的,可以看做是对于 emacs 本身的增强,这种增强又可以分为两个部分,即功能的增强和组件的增强:- [[./core/init-package.el][package]]:包管理器配置,包括代理,源,包管理器的选择,配置目录整理等。
- [[./core/init-basic.el][basic]]:最为基础的配置,其核心目的是将 emacs 改造成一个舒适的记事本(裸 emacs 确实做不到这点)。
- [[./core/init-enhance.el][enhance]]:emacs 本身功能的增强配置(不会引入新的功能)。包括 minibuffer, consult, embark 这一类组织其他功能的模块,还有一些原有功能(bookmark, register, rectangle...)的配置。
- [[file:core/init-navigate.el][navigate]]:导航配置,方便进行光标的跳转。
- [[./core/init-window.el][window]]:window 导航、布局和显示配置。
- [[./core/init-tabbar.el][tabbar]]:对于 window 布局组的管理配置,又因为它 frame-local 的特点,许多 frame-local 的指示部分也会放到这里。
- [[./core/init-modeline.el][modeline]]:modeline 配置,因为直接照抄 roife,所以从 ui 中移出。
- [[./core/init-ui.el][ui]]:包括字体、主题、光标、fringe 等组件配置。
- [[./core/init-shell.el][shell]]: eshell 配置
- [[./core/init-term.el][term]]: vterm 配置,和 eshell 互斥
- [[./core/init-util.el][util]]:工具类,用于存储方便配置或者自己写的工具函数
- [[./core/init-tmp.el][tmp]]:临时配置,用于存放尚未归类的配置或者实验性配置。** 编辑配置(edit)
这部分集中于 emacs 编辑源码的能力,可以说是 vim 之前负责的部分:- [[./core/init-edit.el][edit]]:通用编辑配置,包括高亮、结构化编辑、重构等。
- [[file:core/init-completion.el][completion]]:补全配置,存在多种补全源。
- [[./core/init-prog.el][prog]]:源码分析与交叉引用,包括基于搜索匹配,tags,lsp,treesit 多种分析模式。
- [[./core/init-lang.el][lang]]:不同源码文件,启用不同的配置。
- [[./core/init-remote.el][remote]]:远端编辑和 docker 配置。** 项目管理配置(project)
会以项目的方式被组织和管理,同时在时间维度上需要引入版本控制和日程管理:- [[./core/init-project.el][project]]:基础的项目管理配置,包括项目内检索,项目侧边栏等。
- [[file:core/init-workspace.el][workspace]]:对于工作空间的配置,一般是一个项目为一个工作空间,每个工作空间里有 1 个 window 布局组。和 tab-bar 互斥。
- [[./core/init-dired][dired]]:文件管理器配置。
- [[./core/init-vsc.el][vsc]]:版本控制配置,包括 chunk 和 magit 。
- [[./core/init-agenda.el][agenda]]:日程管理配置。
- [[./core/init-debug.el][debug]]:项目的编译、运行、调试和部署等方面。
- [[file:core/init-control.el][control]]: 日程管理配置,包括 org-capture** 写作配置(writing)
包括中文适配,文档撰写,博客撰写,论文撰写等(或许还考虑知识管理):- [[./core/init-org.el][org]]:org-mode 配置。
- [[./core/init-markdown.el][markdown]]:markdown 配置。
- [[./core/init-tex.el][tex]]:latex 配置。
- [[./core/init-input.el][input]]:中文输入配置,包括输入法配置和中英文协调配置。
- [[./core/init-blog.el][blog]]:博客撰写配置。
- [[./core/init-export.el][export]]:导出成多媒体内容,包括幻灯片,pdf,脑图等形式。** 阅读配置(reading)
侧重于对于多媒体内容的浏览:- [[./core/init-broswer.el][broswer]]:浏览器相关配置。
- [[./core/init-community.el][community]]:社交相关的配置,包括 RSS,email 等。
- [[./core/init-music.el][music]]:希望我不会 nerd 到有一天想在 emacs 上听音乐。这种配置思路的缺点是忽略了不同功能模块之间的相互配合,那么趣味性会减少很多,所以应当通过学习多多在文档中记录这些知识。
* 文档
- [[file:doc/speedup.org][speedup]]:记录启动性能优化思路。
- [[file:doc/general.org][general]]:记录如何将 emacs 改造成一个舒适的记事本。
- [[file:doc/keybinding.org][keybinding]]:记录如何完成键绑定。
- [[file:doc/ghost.org][ghost]]:记录 emacs 奇思妙想。
- [[file:doc/operate.org][operate]]:记录 emacs 奇妙操作。