Skip to content

Thysrael/emacs.d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EMO

选择

在我结束了大三和保研的事情后,我希望我可以干一些自己想干的事情。配置一款“我自己”的编辑器再次被我提上日程。

vscode 和 sublime text 被我早早划去了,没有任何原因,只是不够帅气。但是对于 vim 和 emacs 的选择,却让我纠结了很久,以至于需要写一个段落来坚定自己的心思。

vim 实在是太诱人了:我曾经配置过它;neovide 漂亮的光标移动特效(果冻光标),而且它最近还支持中文了;十分帅气潇洒的多模式编辑;在比较极端的条件下可以应用;因为专注于编辑功能,所以配置的背景知识不需要太多,而且中文教程很多。但是我依然没有选择 vim,这是因为我突然想到,当我就算配置完了 vim,那么我不过收获了一个编辑速度更快的编辑器,就算比 vscode 快,那又如何?我想要一个“我自己”的本质是什么?我虽然不知道“我自己”是什么,但是我知道,现在的我一定不是“我自己”。

emacs 则相反:因为它不只是一个编辑器,更像是一种 生活方式 (起码是工作方式),所以要花很多时间去了解各个方面;它的 GUI 和中文支持并不太好,我还记得我花了很长时间去配置字体等宽和输入法;键绑定永远的痛,默认快捷键和熟悉的 CUA 模式完全不一样,而且相比于 vim 还很对手指不友好、没有逻辑、还很难按;甚至启动时间也很慢,我看网上说甚至连大文本文件的处理也不如 vim 性能好。

但是我还是想使用 emacs,我觉得 emacs 对我而言,是一种更多的 可能性

配置架构

正是遵循上文提出的思想,我将我的配置按照工作的场景来划分为不同模块。正因为不同模块对应不同场景,也就是不同需求,所以这样组织的配置,既有逻辑性,又有独特性:

通用设置(general)

这种设置是通用的,不区分工作环境的,可以看做是对于 emacs 本身的增强,这种增强又可以分为两个部分,即功能的增强和组件的增强:

  • package:包管理器配置,包括代理,源,包管理器的选择,配置目录整理等。
  • basic:最为基础的配置,其核心目的是将 emacs 改造成一个舒适的记事本(裸 emacs 确实做不到这点)。
  • enhance:emacs 本身功能的增强配置(不会引入新的功能)。包括 minibuffer, consult, embark 这一类组织其他功能的模块,还有一些原有功能(bookmark, register, rectangle…)的配置。
  • navigate:导航配置,方便进行光标的跳转。
  • window:window 导航、布局和显示配置。
  • tabbar:对于 window 布局组的管理配置,又因为它 frame-local 的特点,许多 frame-local 的指示部分也会放到这里。
  • modeline:modeline 配置,因为直接照抄 roife,所以从 ui 中移出。
  • ui:包括字体、主题、光标、fringe 等组件配置。
  • shell: eshell 配置
  • term: vterm 配置,和 eshell 互斥
  • util:工具类,用于存储方便配置或者自己写的工具函数
  • tmp:临时配置,用于存放尚未归类的配置或者实验性配置。

编辑配置(edit)

这部分集中于 emacs 编辑源码的能力,可以说是 vim 之前负责的部分:

  • edit:通用编辑配置,包括高亮、结构化编辑、重构等。
  • completion:补全配置,存在多种补全源。
  • prog:源码分析与交叉引用,包括基于搜索匹配,tags,lsp,treesit 多种分析模式。
  • lang:不同源码文件,启用不同的配置。
  • remote:远端编辑和 docker 配置。

项目管理配置(project)

会以项目的方式被组织和管理,同时在时间维度上需要引入版本控制和日程管理:

  • project:基础的项目管理配置,包括项目内检索,项目侧边栏等。
  • workspace:对于工作空间的配置,一般是一个项目为一个工作空间,每个工作空间里有 1 个 window 布局组。和 tab-bar 互斥。
  • dired:文件管理器配置。
  • vsc:版本控制配置,包括 chunk 和 magit 。
  • agenda:日程管理配置。
  • debug:项目的编译、运行、调试和部署等方面。
  • control: 日程管理配置,包括 org-capture

写作配置(writing)

包括中文适配,文档撰写,博客撰写,论文撰写等(或许还考虑知识管理):

  • org:org-mode 配置。
  • markdown:markdown 配置。
  • tex:latex 配置。
  • input:中文输入配置,包括输入法配置和中英文协调配置。
  • blog:博客撰写配置。
  • export:导出成多媒体内容,包括幻灯片,pdf,脑图等形式。

阅读配置(reading)

侧重于对于多媒体内容的浏览:

  • broswer:浏览器相关配置。
  • community:社交相关的配置,包括 RSS,email 等。
  • music:希望我不会 nerd 到有一天想在 emacs 上听音乐。

这种配置思路的缺点是忽略了不同功能模块之间的相互配合,那么趣味性会减少很多,所以应当通过学习多多在文档中记录这些知识。

文档

  • speedup:记录启动性能优化思路。
  • general:记录如何将 emacs 改造成一个舒适的记事本。
  • keybinding:记录如何完成键绑定。
  • ghost:记录 emacs 奇思妙想。
  • operate:记录 emacs 奇妙操作。

About

my emacs config

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages