用了 Emacs 近半年, 分享一下我的感想和笔记.

使用 Emacs 近半年, 我的感觉就是, Emacs 是我用过的最灵活强大的编辑器, 我想我至少 5 年之内再也不用再尝试其它编辑器了.

之前一直在用的 Sublime Text, 感觉在操作上快捷键非常丝滑, 响应也很快, 也为它写了许多插件. 但随着对编辑方面的自定义上的要求越来越细, 越觉得是时候该试试别的编辑器了. 后来就是在 Vim 系列和 Emacs 间选择, 最终因为想试试 Org-Mode 选择了系统的学习 Emacs.

Emacs 满足了我对一个编辑器最大的几个需求:

  • 100% 可配置 (内置的定制系统, Elisp…)
  • 100% 的可见性. 在 Emacs 中甚至一个字符的相关所有信息 (UTF-8 码,渲染规则…) 都可以用一个快捷键看到.
  • 100% 的键盘操作.
  • 100% 的 Hacky.
  • 稳定. Emacs 的 Macro, LSP, 正则查找等核心编辑功能, 我觉得是几个编辑器中最稳定强大的实现.

Emacs 因为强大, 以前习惯被说为 “大而不当”. 但我发现它的设计哲学和整体的统一性, 跟 Unix 有相同的味道. 如果说几点我目前觉得的短处, 可能就是:

  • 速度. 对于大文件的加载, 的确比不上 Sublime Text 或者 vim. 但目前还不曾真正成为问题.
  • 不常用的快捷键的确有些容易忘记, 且多需 Combo. 对于这点, 我通过使用客制化键盘和自定义快捷键缓解.

我对新技术的学习一般都是通过通读官方文档. Emacs 内置的帮助系统也非常给力, 从这方面说, 它简直是最 “新手友好” 的了. 而且我学 Emacs 的一个原则是, 尽量先把它内置的功能用熟练了, 再去尝试第三方的扩展. 通读一遍内置的 Info Page, 我发现很多编辑所需的东西, 原来早有了 Emacs 自己的一套, 我所要做的就是去习惯它的操作上的设计.

所以学习过程中,做了很多笔记.帖在了自己的博客上: Emacs Quick Reference | unifreak’s blog.

这个笔记是英文的,多是对 Info Page 的总结,我只是用来自己快速参考和查找用, 并不适合当作教程看.希望能对某些人有用.

6 个赞

要慎重考虑的问题:

  • 小拇指,隐隐作痛
  • 永远调整不完的配置
  • 肉眼找不见的其他活的使用者
4 个赞

哈哈, 我不用小拇指, 我用左掌边按 Ctrl; 像这样 (图是网图):

emacs-palm-ctl

强烈推荐, 习惯之后非常自然;

配置有一段时间是要调吐了, 得自己克制一点… 人少是容易寂寞, 只好多逛一下论坛或 IRC 了; 不过人少也才能显自己特立独行 ;D.

3 个赞

我也是这样用,Ctrl 键对这样用法的人来说基本是隐形了。

不过纯键盘使用时还要注意大拇指,如果长时间向手掌内侧弯曲去按 Alt 的话,也很容易痛。我目前解决的办法是尽量不把太高频的操作绑定到 Alt上(比如 Atl+Space, 少用; 用 Alt + x 和 Alt+Tab 对大拇指来说已经够多了)

1 个赞

小拇指痛可以通过换分体键盘,或者使用模式编辑来解决。 永远调整不完的配置就说明有没有被满足的需求,这是好事儿

1 个赞

感谢分享! 对于 Alt 我一直用的大拇指中关节, 到现在倒也还没有感到疼. 把 Alt 绑到其它地方, 会不会不太好配合数字前缀呢?

个人不大建议改变键位。不然到了其他电脑会很不适应。就是要注意使用的度应该就没问题了。我自从去掉了 Alt+Space (之前用它在 Corfu 中启用 orderless 的补全),就没痛过了。目前还会经常用 Ctrl+Alt+Space (mark-sexp)来选择内容,不知道什么按键比较适合这个操作。

1 个赞

哈, 又学到了新技巧, 原来 Ctrl-Alt-space 也是 mark-sexp, 之前一直用的 Ctrl-Alt-@, 很难按. 过了一遍 Emacs 自带的 sexp 相关快捷键, 在 Emacs 看来, 应该 sexp 都跟 Ctrl-Alt 有关吧:

CM-@/<spc>      end of next sexp
CM-q            reindent lines in sexp
CM-t            transpose sexp
CM-k            kill sexp
CM-b/f          back/forward sexp
...

看来如果不太想忘了自带的绑定的话, 大概也得绑到你的概念里对应的 Ctrl-Alt 组合吧.

我一直交换Ctrl和Caps的,用无名指按Caps方便也省力

那 corfu 中的 M-space 推荐换绑哪一个键呢?

我的 Ctrl 和 Caps 都是 Ctrl, 这样 Ctrl-Alt 也比较好按.

space-Caps 用于临时切大写, 很少用到. 用掌边按 Ctrl 的话, 发现 Caps 当 Ctrl 也不是那么必要了.

另外还将 ` 映射到到 C-x, 这样不太容易忘记内置的绑定还少按一个键.

1 个赞

我不理解大家都不用 vim binding, 我从 vim 过来的, 感觉 vim binding 挺好用的, 而且容易记

把五年更换至forever

也想过用 Evil-mode, 在 Sublime Text 上也一直用的 Neovintageous 模拟的 Vim 绑定. 不得不说, Model Editing 对于文本编辑来说, 的确是最跟手的. 即使到现在, 还时不时肌肉会混乱回 Vim 的模式.

没在 Emacs 中用它, 对我来说实际从一开始就是一个衡量之后的选择:

  • 如果我那么依赖 Vim 绑定, 不如当初直接换 Vim 得了. 因为所有的模拟, 到最后都不免发现, 总有那么几个绑定是没有实现, 或者真的模拟不来的.
  • Emacs 和 Vim 绑定, 从来都是两个大阵营, 包括在终端的各种工具, 也都是提供两种风格的绑定或默认实现了其中的一种. 学习一下 Emacs 原生绑定, 对于这些工具的快捷键设计的理解的使用, 也是有帮助的, 所以我也是想有意识的学一下.
  • 如果仅从 “学习另一种文化” 这方面看, 换到 Emacs 还要各种调配 Vim, 对我来说有些类似从 Window 换到 Linux 还要安装各种桌面以模仿回 Window; 或者想学 Go, 却一直在 Hack 各种 OO 设计模式如何实现.
  • 虽然反直觉, 但我觉得我们在编辑器中的大部分时间, 其实不是在编辑或打字. “编辑速度” 可能没有我自己想的那么重要.

当然这只是我自己的逻辑, 并不是对 Evil 的反对.

用小指关节按下 Ctrl 更好

目前来看, 说 forever 是毫无问题的, 哈哈. 但是谁知道 5 年后的事儿呢; 老实说 5 年前我也觉得我不会尝试换 Sublime Text 的…

我直接放弃了使用 orderless, 目前通过 fussy 使用 flx替代,直接输入就是模糊搜索。

整一把分体键盘帮助挺大的,把修饰键放thumb cluster或者home row都能明显改善输入体验。想自己攒的话可以看下坛里有人做过的redox,有线版的难度比较低,成本也不算高。

大拇指确实痛,掌压已经解放了小指。Alt又很常用,终极解决方法只有分体键盘了,这样也不影响其它时候切到常规键盘。

自从用kinesis advantage2之后,再也不用担心小拇指了,因为小拇指的活基本都给大拇指了

2 个赞