【问题标题】:Can't define key bindings with define-key in Emacs无法在 Emacs 中使用 define-key 定义键绑定
【发布时间】:2012-09-20 17:41:24
【问题描述】:

我正在尝试在 Emacs 24.1 中为我的 M-x ansi-term 窗口绑定几个键。我尝试将以下内容添加到我的 .emacs 文件中:

(define-key term-raw-map (kbd "M-J") 'windomove-left)

但 Emacs 抱怨:

Debugger entered--Lisp error: (void-variable term-raw-map)
  (define-key term-raw-map (kbd "M-J") (quote windmove-left))

更新:使用 dkim 提供的构造,我也可以切换到 term-char-mode。现在一切正常:

(add-hook 'term-load-hook
  (lambda () 
    (define-key term-raw-map (kbd "M-J") 'windmove-left)  ; Move to the left window
    (define-key term-raw-map (kbd "M-L") 'windmove-right) ; " " right "
    (define-key term-raw-map (kbd "M-I") 'windmove-up)    ; " " above "
    (define-key term-raw-map (kbd "M-K") 'windmove-down)    ; " " above "
    `term-char-mode
    ))

【问题讨论】:

    标签: emacs keyboard-shortcuts


    【解决方案1】:
    (add-hook 'term-load-hook
      (lambda () (define-key term-raw-map (kbd "M-J") 'windmove-left)))
    

    来自term-load-hook 变量的文档,

    term-load-hook

    这个钩子在加载术语时运行。 这是放置键绑定的好地方。

    【讨论】:

    • 谢谢,lambda() 是做什么的?我在哪里可以找到term-load-hook 上的文档?
    • 另外,如果我想添加更多的键绑定,我可以将它们放在同一个钩子中吗?我应该用; 分号分隔它们吗?
    • @roseck 执行M-x ansi-term后可以通过C-h v term-load-hook找到term-load-hook的文档。
    • @roseck 你的意思是term-line-mode 还是term-char-modegnu.org/software/emacs/manual/html_node/emacs/Term-Mode.html
    • @roseck 这是一个与原始问题完全不同的问题。你最好写一篇关于它的新帖子。我不确定 Emacs 是否有为此目的的内置机制。
    猜你喜欢
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多