An extensible, customizable, free/libre text editor — and more.
扩展性强、自由是 Emacs 中最重要的概念,初学者一定要试试牢记这一点。在使用过程中,逐渐去打造最符合自己的编辑器。提问的智慧是极客间基本的礼仪,你也应该掌握它。
Value | Emacs | Vim | Neovim | VSCode |
---|---|---|---|---|
Approachability | ✓ | ✓ | ||
Doing one thing well | ✓ | |||
Editing efficiency | ✓ | ✓ | ||
Extensibility | ✓ | ✓ | ||
Freedom | ✓ | |||
Integration | ✓ | |||
Introspectability | ✓ | |||
Keyboard centrism | ✓ | ✓ | ✓ | |
Maintainability | ✓ | |||
Progressiveness | ✓ | ✓ | ||
Stability | ✓ | ✓ | ||
Text centrism | ✓ | ✓ | ✓ | |
Velocity | ✓ | ✓ |
上面表格列举了不同编辑器的 core value,读者可根据自身需求,选择最适合自己的。
Values are defined as expressions of relative importance. Two things that we’re comparing could both be good attributes. The real question is, when you have to make a choice between two of them, what do you choose? That choice that you make, reflects your core values.
对于中文用户来说,推荐的入门教程是下面两个:
- 一年成为Emacs高手 by 陈斌
- 21 天学会 Emacs(2022 Edition) by 子龙山人
陈斌的文章重在理念的培养上,而子龙的 21 天视频教程重在具体操作上,两个教程同时看可以做到传统武学上的“内外兼修”。
LSP 是当前使用最广泛的一套协议,用于给文本编辑器提供类似 IDE 的功能,比如:自动补全、定义跳转等。对于 Emacs 来说,主要有两个实现:
- emacs-lsp/lsp-mode,主打功能丰富
- joaotavora/eglot,主打小巧精悍
关于这两个的选择,读者可以都尝试一下,这里给出一些参考链接:
LSP 支持完善。服务端实现是:tools/gopls
LSP 支持完善。服务端实现:rust-analyzer/rust-analyzer: A Rust compiler front-end for IDEs
- LSP 支持中等。服务端实现:Clangd: teach your editor C++
- 另一种流行的配置是 ctags,见:universal-ctags/citre: Ctags IDE on the True Editor
LSP 支持完善。服务端:microsoft/pyright: Static type checker for Python
不需要再安装 elpy,已经过时。更多可参考:EmacsEditor - Python Wiki
LSP 目前对 Clojure 的支持不够强大,用的最多的是 CIDER,一套可供参考的配置是:
TBD