在2022年,与Emacs再重逢

·  阅读 919

在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的你,再重逢。

分类:
开发工具
标签:
分类:
开发工具
标签:
收藏成功!
已添加到「」, 点击更改