【问题标题】:emacs bind key to the insertion of anotheremacs 将键绑定到另一个插入
【发布时间】:2016-01-17 03:07:03
【问题描述】:

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

这就是我要找的。​​p>

谢谢。

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 谢谢,我最终使用了不同的方案,但“自插入命令”正是我所需要的。
    【解决方案2】:

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

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

    您只需点击C-q,然后点击该键,即可插入与键盘键对应的任何字符(以及其他字符)。

    >

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

    • C-q &gt; 插入&gt;
    • C-q &lt; 插入&lt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多