我最近一直在修改我的 Emacs 设置,但我遇到了一个开始让我烦恼的问题。我希望能够引入额外的修饰符,如键。为了让事情更清楚,我想要做的是当我处于 dired-mode 时(不接受文本输入,因此可以反弹普通字母)我希望这样当我按住字母 s
时并按 j
或 l
光标分别移动到下一个和上一个目录行。有效地制作s
键就像一个修饰符。
我已经研究过制作 s
应用修饰符,例如 super
或 hyper
但这些都用于全局性的事情。这可能吗?如果不是,那就太可惜了。
编辑:
我所追求的似乎有些困惑。如果我定义一个正常的键序列,例如(define-key map (kbd "s j") 'dired-next-dirline)
然后我必须一直按s
每次按 j
之前的键移动到下一个目录行。这是不是 我在寻找什么(不要听起来很生气 :P)我想要 s
充当修饰符,我可以保留 s
按住键并继续点击j
向下移动。
我希望我已经更清楚地说明了这一点。谢谢。
最佳答案
我在代码中挖掘并想出了这个。它绑定(bind) s j
至my-dired-next-dirline
,但在你完成之后,只需j
再做一次就足够了。任何其他键都会重置临时绑定(bind)。
注意函数set-temporary-overlay-map
在 Emacs 24.2 中添加,在撰写本文时尚未发布,因此您需要构建 Emacs from git .
(defun my-dired-next-dirline ()
(interactive)
(dired-next-dirline 1)
(set-temporary-overlay-map
(let ((map (make-sparse-keymap)))
(define-key map [?j] 'my-dired-next-dirline)
map)
nil))
(eval-after-load "dired"
'(progn
(let ((prefix-map (make-sparse-keymap)))
(define-key prefix-map "j" 'my-dired-next-dirline)
(define-key dired-mode-map "s" prefix-map))))
关于emacs - emacs中的附加修饰键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11939243/