作者: 涂鸦-梓寒
来涂鸦工作: job.tuya.com/
Emacs 和 Vim 两大编辑器,一直让前赴后继的工具当难以取舍。Emacs 被称为 神之编辑器,而 Vim 则被称为 编辑器之神。追求独步天下的高手们目睹了她们的风采后,看到她们朴素单薄的界面后,不禁心生疑问,这就是神器吗?一些人对她们有了轻视之心,甚至嗤之以鼻。也有一些人勇敢地尝试学习,却因为其学习曲线陡峭而漫长,在没领略到其强大的 内在美 之前,就放弃了。但还是有一些人坚守了下来,默默守护着。
我从一个小白,也慢慢坚守了快 5 年,其中也从 Vim 到了 Emacs。
为什么选择 Vim/Emacs
大学期间,虚拟机里面搞搞 Linux,很多配置文件的编辑都会用到一些 Vim 的,所以接触到了 Vim。当时只是觉得这个编辑器打开文件好快啊。后面网上看到大神的 Vim 的操作,行云流水、水银泻地,不禁心生向往。工作中身边正好也有用 Vim 的,被安利了,当时觉得写代码的时候不用鼠标,纯键盘的操作好酷啊(其中也是觉得自己写代码的速度、效率太低了,得去弄一些高效的东东)。
之后就是各种折腾、配置 vim 的插件,对比自己之前使用的 atom、subline,感觉自己写项目中最需要的功能,就去找这类的插件,然后网上去看大神怎么使用 vim 的,他们为什么用的一些功能是 vim 默认没有的,一点点自己去适应、消化、吸收。刚开始的时候,真的是写代码的速度更慢了,但是还好自己坚持下来了。
接着就是慢慢觉得 vim 还是真的不好看,有没有好看而且好用的编辑器,这个时候在网上看到 spacemacs,了解了一下,原来是大名鼎鼎的 Emacs,看了一些说 Emacs 的操作,觉得真的是很难用。spacemacs 可以在 emacs 里面使用 vim,双剑合璧,也是被当时她的主题吸引到了,就决定去试试。慢慢了解到 spacemacs 对 emacs 原有的按键、快捷键进行了梳理,避免了使用原始 emacs 的一些问题。加上那个时候在看一些 fp 语言的东西,正好配置 spacemacs 的时候得去写 lisp,正好就坚持了下来。spacemacs 默认使用的 vim 的编辑模式,所以在编辑过程中还是很好的适应。
Emacs 的优点
Emacs 是伪装成编辑器的操作系统。这句话其实一点都不夸张,Emacs 其实是一个 Lisp 的解释器,得益于其强大的 FFI,可以调用外部动态库。而这点是 Vim 的脚本 VimScript 不具备,Vim 需要借助于 Python 来做类似的事情。
Emacs 的配置和扩展因为使用 Lisp 来编写,加之 Lisp 支持 repl,插件和功能扩展的编写、调试更加方便、快捷。Lisp 是什么东西,这同样是种很有生命力的编程语言。 在 C 语言还没有发明的年代,MIT 的人工智能实验室写 ITS 操作系统时, 一部分用的是汇编语言,还有一部分就是用的 Lisp。 现在,Lisp 仍在人工智能研究领域广泛使用着。 有这么牛逼的扩展语言,注定 Emacs 向着无所不能的方向发展。 渐渐地,人们用 Emacs 不再限于写程序,写文档, 而且在 Emacs 里管理文件系统,运行终端,收邮件,上网, 听音乐……,真是一发不可收拾。甚至,有人用 Emacs 控制咖啡机煮咖啡。
Emacs 的插件 evil,可以使得 Emacs 里面使用 vim。vim 强大的地方就在于其设计哲学。vim 把输入分成 纯输入 和 操作 两部分,纯输入 就是在单纯的输入字符,当需要移动光标、复制粘贴时则需要 操作;这两部分的切换就是通过模式的切换,其 操作 使得 纯输入 更加高效,所以 vim 才会被称为 编辑器之神。当 Emacs 有了 vim 的编辑模式,不是更强大吗!但是 vim 很难移植 Emacs 的能力了。
Emacs 编辑哲学
Emacs 在编辑文件的时候,不同的插件做不同的事情。其打开 file 的时候,会有 1 个 major mode 加上 n 个 minor mode。比如当我们打开一个 ts 文件的时候,typescript-mode 会对 ts 语法等等的支持,而 highlight-mode 会其 ts 关键字做 highlight,flycheck-mode 会检查你的英文拼写的问题,lsp-mode 会 buffer 做补全,display-line-numbers-mode 会对 buffer 的行号做显示或隐藏,indent-line-mode 会对缩进线做控制等等。这样的好处,你不仅可以切换你的 major-mode,也可以灵活控制各个 minor-mode 的开闭。比如当 ts 文件很大的时候,用 typescript-mode 的话,可能会很慢,你可以切换到 text-mode,这样打开文件会加快很多。甚至可以根据文件的 stat 来控制是否使用 major-mode 打开及 minor-mode 开闭。
org-mode 的强大
很多 Emacs 都是因为 org 入坑的,甚至一些学生物、化学的,也都是因为 org 入坑的。org 的好处,可以说是 罄竹难书。当然 VimWiki 也很好用,但是还是难以比肩 org 的。可以这么说 org = VimWiki + markdown,基本上 VimWiki 和 markdown 可以实现的功能,org 都可以做,反之则不亦然。
Amazon 之前文档的编写采用的不是 word 之类的软件,也不是 markdown,而是采用 org。
- org table
- org todo
- org source block
- org capture
- org agenda & calendar
从 calendar 可以快速定位到我的 TODO
从 calendar 也可以查看我今天、明天、后天、本周、下周的计划安排
org 的强大之处远不止这些。(github、gitlab 默认支持的文档就是 markdown 和 org 哟)
我在用的 emacs 的一些功能特性
- clojure 的 cider
cider 提供了 repl,你可以连接到一个 clojure repl,进而执行一些代码或者调试远程代码等等。如下图,我在本地运行了一个 lein repl,然后连接上去,可以执行一些功能性的代码。
- lsp
不只是 vs-code 或者是 IDE 的补全可以做得很好,自从微软 巨硬爸爸 提出了 lsp,任何的编辑器补全代码的协议都统一了,现在 vim emacs 这些也都支持了,vs-code 补全代码就是用的 lsp。
当然微软还推出了 dap,还有 ReactX,如 rxjs。不禁想说一声 巨硬爸爸,强啊!!!
- mu4e
emacs 还可以作为邮件接收的客户端。上图说明
此外,Emacs 还可以看图、看 pdf、看网页。绝对是你的 宝藏男/女孩,你值得拥有!!!
最后放张图吧!
来涂鸦工作: job.tuya.com/