gpt4 book ai didi

emacs - 如何在 emacs 中绑定(bind) C-=?

转载 作者:行者123 更新时间:2023-12-04 13:20:28 25 4
gpt4 key购买 nike

我的 .emacs 中的这个 s 表达式文件不会产生所需的结果:

(define-key global-map (kbd "C-=") 'djhaskin987-untab-to-tab-stop)

为什么我不能将命令绑定(bind)到 Ctrl+=?

编辑 为了澄清:

我正在使用 emacs23-noxurxvt-256colors 的标准版本上对于 Debian,除了我用 --disable-iso405776 重新编译(或类似的东西)它,这样 Ctrl+Shift 就不会做奇怪的“插入字符”的事情。我不知道这是否会影响任何事情。例如,C-M-i 发送 M-TAB,我不明白。

编辑二 :

我很抱歉没有说清楚。函数 djhaskin987-untab-to-tab-stop有行 (interactive)在里面。这部分有效。

最佳答案

接受的答案与 link in the first comment to it 相结合足以开始一个完整的解决方案。步骤是:

  • 让您的终端输出 key
  • 的转义码
  • 让 Emacs 将转义码识别为标准按键
  • 在模式映射中绑定(bind)按键

  • 第一个非常依赖终端和/或操作系统。

    第一条评论中的链接显示了 X Window System 的一些示例。键名在 /usr/X11R6/include/X11/keysymdef.h 中可用(或尝试 locate keysymdef.h ),前缀为 XK_ (出于我们的目的,应将其删除)。我读到符号名称优于键文字。

    我目前没有运行 X,但我认为在你的情况下它应该是这样的:
    XTerm.VT100.Translations: #override \
    Ctrl ~Meta ~Shift <Key> equal: string(0x1b) string("[emacs-C-=")\n

    第一个字符串是转义,第二个是您选择的。

    在 iTerm 中,您可以使用 Preferences->Keys并选择 Send Escape Sequence作为 Action .例如,我有:

    iTerm key mappings

    Emacs 维基 lists some configuration methods用于其他终端。

    现在您可以教 Emacs 将其识别为 C-=。先 define-key进入 input-decode-map .我有几个辅助功能:
    (defun my/global-map-and-set-key (key command &optional prefix suffix)
    "`my/map-key' KEY then `global-set-key' KEY with COMMAND.
    PREFIX or SUFFIX can wrap the key when passing to `global-set-key'."
    (my/map-key key)
    (global-set-key (kbd (concat prefix key suffix)) command))

    (defun my/map-key (key)
    "Map KEY from escape sequence \"\e[emacs-KEY\."
    (define-key function-key-map (concat "\e[emacs-" key) (kbd key)))

    那么:
    (my/global-map-and-set-key "C-=" 'some-function-to-bind-to)

    某些键(当前: ()\|;'`"#., )需要在字符串中转义,例如 C-\. .

    关于emacs - 如何在 emacs 中绑定(bind) C-=?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10660060/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com