emacs将键绑定到另一个的插入

时间:2016-01-17 03:07:04

标签: emacs elisp

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键绑定,因为我正在创建一个keybind链,如下所示:

C-. → > → paredit-forward

而不是

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

这就是我要找的。

感谢。

2 个答案:

答案 0 :(得分:3)

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

(kbd ">")会产生键盘宏">";所以你告诉Emacs,当输入C-.时,它应该完成输入>时所做的事情。

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

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

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

答案 1 :(得分:1)

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

Emacs已经提供了常规键,绑定到常规命令,插入任何字符:键 {{1 }}

要插入与键盘键对应的任何字符(以及其他字符),您只需要点击>,然后点击该键。< / p>

所以答案就是这样做:

  • C-q 以插入C-q
  • C-q > 以插入>