Emacs轻奢之路(2022版)

原创
2022/04/01 09:03
阅读数 155

 写在前面

这个系列最早的时候已经录制过一个版本。但随着对Emacs的日常使用,发现其实有些内置的功能不是那么的常用,而有些新的内置功能也需要补充。所以决定重新编写这个系列,也就是你现在看到的这个2022版的《Emacs轻奢之路》。

本文,你可以结合之前的视频系列一起阅读,也可以单独阅读。相较于视频,本文的差异体现在:

  • 删除掉不常用的功能,读完本文后,你应该有举一反三的能力,在合适的时机去寻找那些被我删除的功能
  • 补充一些最新版(甚至是28,29版本)的Emacs新增的功能

与之前一样,我还是在开始之前向你推荐这个Github:emacs-tw/awesome-emacs,在这里你可以找到更多的内置以及第三方的软件包。

 IDO/Icomplete

IDO可以让你交互式的操作缓冲区以及文件。而Icomplete可以让你通过输入一定的文字来快速的补充完整或过滤结果。这两个一般是同时存在的,如果你想体验,你可以按下M-x或者比如C-x b,然后输入一些内容来体验。

作为一个延伸,我们再介绍另外一个内置的功能fido-mode。Fido (Fake IDO),基本上是整合了以上两者的功能,所以不用单独开启上面的两个功能,开启这一个即可。默认的,这个没有垂直的模式,所以很多人喜欢装一些第三方的包来实现垂直模式。其实在早期的Emacs里面,你可以配置一些变量来实现垂直样式,但从Emacs 28.1开始,内置了一个fido-vertical-mode来原生实现垂直模式的FIDO。如果你喜欢垂直模式的,直接开启这个fido-vertical-mode即可。

 Winner Mode

这是一个用来管理窗口变化的全局模式。经常的,我们开启了几个Window,然后关闭了一些,我们就可以通过winner-undo,winner-redo等来撤销或者反撤销。

 imenu

可以根据标题等可识别的菜单项来在当前的缓冲区中进行快速的跳转。非常适合编写org-mode,markdown等文档的时候使用。当然,在变成的环境中,也非常好用。

 whitespace

有些语言编程(Python,我没有念你的身份证;makefile别打喷嚏)的时候,我们非常苦恼这种TAB,空格的混用。这时候我们需要来验证下到底是空格还是TAB。光靠眼睛看,是不现实的。通过移动光标又太慢。而这个whitespace在这种情况下,就可以大显身手。

 prettify-symbol-mode

这个模式是非常有趣的,绝大部分的时候我们都不需要,但偶尔有那么的一个瞬间,我们还是会小小的心动一下,比如当看到别人的lambda显示为λ的时候。嗯,这个模式就这一个功能,会将一些特定的符号显示为一些数学样式/希腊字母样式。不必要,但很美妙。

 Dired

在Emacs中管理文件?是的,这个功能就是为你的这个需求诞生的。虽然很多人觉得它不够美观,不够强大,而纷纷写了更多强大功能的特性来增强或替代它,但不可否认的是,它作为一款内置的文件管理工具,其性能以及其带来的影响都是第三方插件不能比拟的。C-x d来体验吧,它内置了很多的快捷命令,可能得稍微适应一下。

 abbrev

展开缩写。那些很长的单词/句子/表达式……总是那么讨厌,而我们需要天天写。所以才会有snippet这样的代码片段思路。虽然,代码片段工具已经十分强大了(事实上,太强大了),但更多的时候我们是用在编程语言的环境下,而在平时的文档等写作中不常用。因为snippet不能涵盖我们自定义的部分。(其实,我们可以添加自定义的部分)。

在一定程度上,snippet是内置abbrev的一种增强,但如果你喜欢的话,内置的abbrev也非常好用。你可以添加一个个人信息(邮箱,电话,网址,住址等),然后通过一两个字符快速的展开,节省我们不少的时间。

 eldoc

这个完全不需要介绍了。你甚至感觉不到它的存在,但它无处不在。你平时在minibuffer看到的函数的签名提示,参数类型提示等,都是它完成的。你不需要知道它,但它已与你形影不离。

 hideshow

就如同它的名字那样,它的作用就是对一段代码/文档,进行折叠/展开。比如你在编写C-Like代码的时候,{}包围的部分。比如一个class,比如一个function等等。可以让你的文档以及注意力变的更加的集中和聚焦。

 FlyMake

实时语法检查。或许曾经你更喜欢flycheck,或者曾经你听说过许多flymake的“坏话”,但那都是历史了。如今你应该重新来体验一下最新的flymake了。从Emacs26开始,重构之后的FlyMake已经焕然一新。是你心中想要的样子了。而且,已经是我必备的日常工具了。简单,强大。我日常使用的场景都能支持了。

 CC Mode

一直以来,我对这个功能都不怎么感冒。我觉得它重,而且不实用。直到我折腾了它里面的几个命令,比如comment-开头的那几个,hungry delete等之后,就感觉到这些“看似三方”的功能,原来在Emacs中都已经有内置。这已经称为了我日常使用的一个基本的模式了。其实你只需要开启其中的一些你需要或者喜欢的就可以了。但无论你开启了几个,我都建议你非常认真的学习以下CC Mode的手册。太棒了!

 ielm

交互式Emacs Lisp解释器。经常的,我会用它来学习和测试一些ELisp的语法以及函数等。是跟ipython,go playground差不多的东西。学习ELisp的时候,应该会经常使用到它。

 Org Mode

啊,这个包真的不需要解释。甚至有很多人使用Emacs的原因就是因为这个包。文本的世界,或许才是你真正的生活乐趣。(这就是我现在越来越喜欢写而不是录制视频的原因。)

 VC

版本控制。你一定用过Subversion,你一定用着Git,或许你还在使用一些其他的版本控制系统。你以往的做法是安装一个又一个的插件来管理不同的系统。但内置的这个VC可以帮你用一种统一的方式来管理各种系统。不论是SVN,还是Git,一样的操作流程。

但讲真,这个插件功能虽然强大,但有些习惯(尤其是被magit这样的插件)一旦养成,还是需要一定的时间来改变和理解。但你只要适应了VC的思路,你应该会喜欢。

更重要的,在任何平台(比如Windows)上VC都没有性能问题,Magit(等插件)能做到吗?

 EShell/Term

在Emacs中使用终端。不用过多解释,也不用有过多的学习精力,就按照你想的那样使用就行了。减少了一个离开Emacs切换终端的步骤。

 package.el

之前的视频版本中,我把这个插件放到了最前面。而在本文中,我也考虑过不介绍。因为它已经是任何的系统/编程语言/工具……的标配了。包管理器。如果没有包管理器,你都不好意思在开源软件的世界里混。就连……Windows都有了winget,scoop,chocolatey。

你安装的那些第三方插件,都是通过它(或者一些它的增强包)来完成的。没有必要刻意研究它,会配置它的源,会调用它的几个命令(更新,安装,删除等)就可以了。你什么时候对它感兴趣了,它就在那里。

 几个内置的主题

  • leuven,我最喜欢的亮色主题之一了。其实它也有暗色主题,只是没有内置。
  • modus,应该是从Emacs 28开始内置的一款包含亮/暗色的主题。非常好,我很喜欢。暗色有的时候,我感觉眼睛有点累。

 不常用的内置功能

有一些是我不喜欢或者我不常用的,我就没有介绍,列举在这里,你可以按照自己的喜好,来开启或试用。

  • tab-bar-mode,我个人更喜欢使用buffer切换的方式
  • artist-mode,绘制一些ASCII字符画,比如线条,三角形,矩形等
  • CEDET,集成开发环境(但很可惜,我更喜欢eglot或者lsp-mode)
  • Ebrowse,因为不写C++代码,所以我不怎么使用
  • RefTex,Latex的一些标签,引用的支持
  • EWW,网络浏览器
  • Gnus,邮件和新闻
  • Messages,邮件管理
  • ERC,IRC客户端
  • Rcirc,IRC客户端
  • Newsticker,RSS阅读器
  • seq.el,ELisp编程中经常使用
  • cl-lib.el,Common Lisp的扩展包,也经常使用
  • EIEIO,面向对象编程,我是在研究eglot的源码的时候知道了这个东西
  • mpc,音乐播放器
展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部