【问题标题】:Define key-bindings in emacs在 emacs 中定义键绑定
【发布时间】:2011-10-20 14:21:39
【问题描述】:

我想将 emacs 中的命令映射到键绑定。我希望命令 Control-l 与命令 Alt-x goto-line 具有相同的效果,然后返回(因为该命令首先需要调用返回,然后是行号)。

我修改了init文件如下:

(define-key (M-x goto-line) '\C-l)

但这没有用。错误是 define-key 被赋予了超过 1 个参数。

有谁知道如何在 emacs 中重置键绑定?

谢谢!

【问题讨论】:

    标签: emacs keyboard-shortcuts


    【解决方案1】:

    M-g ggoto-line 的默认快捷方式。您可能想尝试一下。

    要重新定义 C-l 使用:

    (global-set-key (kbd "C-l") 'goto-line)
    

    【讨论】:

    • @HemalPandya 对于 goto-line 的默认值是 M-g gM-g M-g 从 M-g 是一个前缀命令。你可能已经在 .emacs 中的某个地方反弹了它。
    • @kindahero 你是对的。没想到goto-line 在 XEmacs 和 Emacs 中会有不同的绑定。我错了。
    【解决方案2】:

    自定义大量键绑定的最简单方法是安装 John Wiegley 的 bind-key 模块,它是use-package Lisp 包的一部分。解决方案在你的init.el

    (require 'bind-key)
    (bind-key "C-l" 'goto-line)
    

    次要模式键通常会覆盖全局键,因此如果您不想要这种行为,请改用函数 bind-key*。该软件包在 MELPA 上,如果您不知道它是什么,请快速了解 Emacs package management(应该需要 2 分钟将 MELPA 设置为您的存储库)。

    Emacs 中键绑定的主要问题是次要模式键通常会覆盖您的自定义键。在 vanilla Emacs 中,人们通过creating a minor mode for your own keybindings 解决问题。如果你真的想了解 Emacs 键的工作原理,请仔细阅读 Key Bindings @ Emacs ManualKeymaps @ Elisp Manual

    【讨论】:

      【解决方案3】:

      我设置为(global-set-key (kbd "C-x g") 'goto-line)。您可以使用它或(global-set-key (kbd "C-l") 'goto-line)。我个人不会从其默认行为中触摸 C-l 键。

      如果必须使用 M-x 定义键,请使用 (define-key global-map (kbd "C-l") 'goto-line). define-key 的第一个参数是一个 KEYMAP。

      【讨论】:

        猜你喜欢
        • 2011-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-15
        • 1970-01-01
        • 1970-01-01
        • 2011-08-06
        • 2014-10-31
        相关资源
        最近更新 更多