emacs 绑定键插入另一个

emacs bind key to the insertion of another

我将 paredit-forwardparedit-backward 分别绑定到 > 和 <。

这意味着如果我想输入 "something->something-else" 我会输入 "something-" 光标会被传送到屏幕的另一部分,然后输入 "something-else".

我的解决方案是使用 C-.C-, 来插入它们。 我试过这个:

(define-key key-translation-map (kbd "C-.") (kbd ">"))
(define-key key-translation-map (kbd "C-,") (kbd "<"))

前面的命令导致 另一个 paredit-forward 键绑定 因为我正在创建一个键绑定链,如下所示:

C-. → > → paredit-forward

而不是

C-. → > → the "greater than" key is inserted into whatever text box I am in.

这就是我要找的。

谢谢。

键绑定到命令。命令通常是交互式功能,但也可以是键盘宏(字符串或矢量格式)。执行键盘宏会导致 Emacs 执行宏的键序列会导致完成的操作。

(kbd ">") 导致键盘宏 ">";所以你已经告诉 Emacs,当输入 C-. 时,它应该做当输入 > 时所做的事情。

通常(在大多数缓冲区中)> 将绑定到 self-insert-command,因此键盘宏 (kbd ">") 简单地插入一个 > 字符,但您已经修改了该绑定。

我相信您想将 C-. 绑定到插入 > 字符的命令。这样的命令是:

(lambda () (interactive) (insert ">"))

不需要 将特殊键(例如 C-,)绑定到插入给定的特殊命令(例如 (lambda () (interactive) (insert ">")))字符(例如,>)。

Emacs 已经提供了一个 general 键,绑定到 general 命令,插入 any字符:键C-q.

要插入与键盘键(以及其他字符)对应的任何字符,您需要做的就是点击C-q然后点击该键.

所以你的答案就是这样做:

  • C-q > 插入 >
  • C-q < 插入 <