在2022年,与Emacs再重逢
虽然Emacs 28正式版还没有发布,我已经在自己的编程环境中编译了Emacs 29。所以也就有了这篇文章。与此同时,我进一步整合了我的几个配置,形成了目前正在使用的一个配置:cabins/emacs.d。
我的目标
由于我同时在以下几个环境下使用Emacs,所以我希望我的配置能够适配以下环境:
- 工作机:Windows 10 (With msys2)
- 个人机:macOS
- 服务器:CentOS (Remote Server)
- termux (Android PAD)
最后一个虽然比较奇怪,但确实是我的实际需求。好在termux与Linux的配置几乎可以不用修改的使用,除了termux中的Emacs版本略低(27.2)。
前两者主要是在GUI下面工作,后两者主要是CLI模式。
配置的特点
- 存在一些兼容平台的代码,由于上面的原因,所以会有一些跨平台的代码逻辑,这一点不可避免。
- 尽可能多的使用Emacs内置的一些功能和模式。
- 使用轻量级的eglot来代替lsp-mode实现编程IDE功能。
使用的内置Mode
- auto-fill-mode,可以在minibuffer里面自动地填充当前光标位置的函数,变量名等
- global-auto-revert-mode,自动将文件的修改同步到buffer中
- auto-save-visited-mode,自动保存功能(Emacs26引入的内置功能)
- 在cc-mode-common中启用了c-toggle-auto-hungry-state,可以使用快速删除以及分号自动换行的功能,适合C/Java等环境的编程习惯
- fido-vertical-mode,垂直排版的fido-mode,Emacs28.1引入的新功能,这一点让我抛弃了很多的第三方包
- 在编程模式下启用了flymake-mode,错误提示
- 在文本模式以及org mode中启用了flyspell-mode,语法检查
- 在编程环境下启用了display-line-numbers-mode,显示行号
- column-number-mode,在modeline上显示列号
- 编程模式下启用了prettify-symbols-mode
- global-visual-line-mode,软换行显示
以上的功能中,自动保存与垂直fido可能是一部分人比较陌生的,因为是近几年才/会添加的功能。但可以让我们免除了安装不少第三方包的烦恼,进一步(可能)加速Emacs的运行。
仍然保留的第三方包
- company,自动补全
- ctrlf,一个简洁的isearch,体验不错
- crux,一些好用的命令集合,但我取消了所有的快捷键绑定,避免冲突
- exec-path-from-shell,环境变量的继承
- format-all,各类编程语言代码格式化
- rainbow-delimiters,彩虹括号
- which-key,按键提示
- yasnippet,代码片段
- eglot,lsp的一个实现IDE的客户端
还有部分其他的第三方包,不一一列出。以上几个,是我强烈推荐安装的。
再重逢
我认识Emacs很久了,但是真正意义上开始把Emacs当作主力的编辑器,我现在回想起来,大概就是我开始在B站录制《Emacs高手修炼手册》的时候。也是这个视频让我真正意义上,把Emacs当作了一个可信赖的伙伴,可长久使用的趁手兵器。
而后来我体验了大量的插件后,我开始思考和探索Emacs本身的一些魅力,我开始删除我的一些第三方包,开始忍受Emacs的不完美。慢慢的,我录制了《Emacs轻奢之路》,也就是这时候开始,我逐渐的将Emacs配置最简化了。一些花里胡哨的插件,也慢慢地成了过眼云烟。
而自动保存,垂直fido这样的功能的内置之后,我感觉Emacs在逐渐的弥补完整那些正经的不完美。而将来,如果eglot这样的插件,再变成了内置功能的话,Emacs将更加的迷人。
2022年3月,深圳的疫情突然加重,7天的慢生活,多次的居家办公,让我开始在下班后,有了一些时间来编写一些文章。我对录制视频可能失去了很多的兴趣,而更加享受安静的文字编写。这样的特殊日子里,与Emacs再重逢。
与同样喜欢Emacs的你,再重逢。