emacs - 如何在 Emacs 中进行缓冲区本地键绑定(bind)?

标签 emacs elisp key-bindings

我最近一直在研究 Emacs 次要模式,它的部分功能是在单独的缓冲区中显示图像。到目前为止,我一直在使用这样的函数:

(defun create-buffer-with-image (name)
  (let ((buffer (generate-new-buffer name))
        (image (get-svg-for-kanji-code name)))
    (switch-to-buffer buffer)
    (turn-on-iimage-mode)
    (iimage-mode-buffer t)
    (insert-image image)))

它会生成一个缓冲区,其中图像作为参数传递,但关闭缓冲区需要按 C-x k 和 Return,一段时间后开始变得很麻烦。简化关闭此类 transient 缓冲区的方法是为 kill-this-buffer 设置一个键绑定(bind)。功能,但它需要是特定于缓冲区的,以免弄乱其他任何东西。问题是如何通过创建缓冲区进行这样的绑定(bind)。

最佳答案

来自 EmacsWiki:https://www.emacswiki.org/emacs/BufferLocalKeys

对于缓冲区本地键,您不能使用 local-set-key , 除非你想修改整个主模式的键盘映射:local-set-key是主要模式的本地,而不是缓冲区。

对于缓冲区本地修改,请改用:

(use-local-map (copy-keymap foo-mode-map))
(local-set-key "d" 'some-function)

作者:蒂亚戈萨博加

要检查更改,请键入 C-h b又名 M-x describe-bindings

关于emacs - 如何在 Emacs 中进行缓冲区本地键绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27321407/

相关文章:

emacs - 如何在isearch中绑定(bind)文本插入

shell - 运行 Emacs shell 时可见的 ANSI 转义序列(这些不是 ANSI 颜色)

emacs - emacs 中 ansi-term 中的奇怪字符

Javascript 多键按下

java - 如何在键绑定(bind)中使用键名称?

emacs - 如何在 Emacs 中检索框架的名称?

emacs - 如何设置键绑定(bind)以在 emacs 中的某些模式下工作而不在其他模式下工作

emacs - Lisp 交互式 emacs 乘法不正确

python - 编写 elisp 程序来自动自省(introspection) Python 对象

ALT+0 的 WPF 键绑定(bind)不起作用