将Emacs的按键绑定到插入另一个按键

3

我将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.

这正是我所寻找的。

谢谢。

2个回答

3

键被绑定到命令。命令通常是交互式函数,但也可以是键盘宏(以字符串或向量格式)。执行键盘宏会导致Emacs执行与该宏的键序列相应的操作。

(kbd ">")会生成键盘宏">";因此,您已经告诉Emacs当输入C-.时,它应该执行与输入>时相同的操作。

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

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

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

谢谢,最终我使用了不同的方案,但“self-insert-command”正是我所需要的。 - Spenser Truex

2
您不需要将特殊键(例如C-,)绑定到特殊命令(例如(lambda () (interactive) (insert ">"))),以插入给定字符(例如>)。 Emacs已经提供了一个通用键,绑定到一个通用命令,可以插入任何字符:键C-q。您只需要按C-q,然后再按下该键即可插入与键盘键对应的任何字符(以及其他字符)。因此,您只需执行以下操作:
  • C-q > 插入>
  • C-q < 插入<

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接