说说那些在 Emacs 里面那些在成熟的 mode 里面 “万年不变“ 的 “默认” 快捷键。(欢迎大家一起补充)

这里说的是标准的 Emacs 的一些 “万年不变” 的快捷键,如果你用的某个集成好的,例如,doom, spacemacs, 它们不在此之列。(我没用过,不过我很怀疑它们会改掉我说的这些)

BTW: 我之前走过一些弯路,很多快捷键在刚开始用 Emacs 那会儿都改了,但是,这会带来很大的麻烦, 所以,下面说的快捷键,其实还是不建议乱改的,因为就正如我说的那样,这些是 “万年不变” 的, 常见的 mode 都用这些约定,你改一个,还得改下一个, 没完没了 …

下面 Ctrl 用 C 表示,Alt 用 M 表示, 使用 - 关联组合.

我下面列出常见的几个,仅作抛砖引玉,欢迎大家贡献!

快捷键 绑定的函数 功能 解释
C-M-a beginning-of-defun 跳转到函数的开头/前一个函数 大部分 mode 会实现自己的 defun, 然后绑定到 `beginning-of-defun-function
C-M-e end-of-defun 跳转到函数的结尾/下一个函数 大部分 mode 会实现自己的 defun, 然后绑定到 end-of-defun-function
C-M-h mark-defun 标记当前 function 通常会使用上面的两个 function 实现
M-} forward-paragraph 跳到下一个 区块
M-{ backward-paragraph 跳到前一个 区块
M-h mark-paragraph 标记当前 区块 使用上面的函数实现
M-q fill-paragraph 将当前的 区块 区域按照 fill-column 的长度换行 有些模式会实现自己的 defun, 绑定到 `fill-paragraph-function
C-M-f forward-sexp 跳转到 S 表达式的末尾 S 表达式我的理解就是那些括号啥的,对称的符号
C-M-b backward-sexp 跳转到 S 表达式的开始
C-M-Space mark-sexp 标记当前的 S 表达式 个人觉得这个在 lisp 配置文件时很有用
C-M-u backward-up-list 跳转到上一个层级 例如,从 method 名直接跳转到所在的类名

BTW: 如果你有一些比较高级的包,可能部分命令会被这些包里提供的更好,更便利的函数换绑。

还有很多,欢迎大家一起补充,一起学习, 有些快捷键如果总是不用,真的会忘掉。

2 个赞

不想按那么多 Ctrl 和 Meta, 又不想改按键怎么办? :upside_down_face:

我猜你想说 Hydra ? 哈哈

是个好东西,但是总想不起来用。

哈哈,我是想说 god-mode, 还有我自己的这个

首先我是坚定的模式编辑用户,主要是觉得 ctrl + meta 按多了手指疼。 但我也确实是原按键的拥护者,我觉得完全搞一套另外的按键是很夸张的事。

2 个赞

:+1: :+1: :+1: :+1: :+1: :+1:

想法真的牛逼~ 可以随意定制的 VIM.

多谢夸奖 :smirk_cat:

默认的不少快捷键我都给删了,因为有时候一不小心就碰到个啥快捷键,,

1 个赞