当我在isearch(isearch-regexp以及反向变体)时,我希望M-u
插入下划线。
无论
(define-key isearch-mode-map (kbd "M-u") 'insert-underscore)
,也不
(add-hook 'isearch-mode-hook
(lambda ()
(local-set-key (kbd "M-u") 'insert-underscore)
))
insert-underscore
是我的函数,只需插入“_”。它可以在主框架和迷你缓冲器中工作,但我无法在isearch中工作......
谢谢!
答案 0 :(得分:4)
Isearch不使用常规命令。 (kbd "_")
以及其他所有人
可打印字符绑定到isearch-mode-map
中的特殊命令。它的
不明显,但是当你按下a时,很多事情都发生在“isearch-mode”中
键。用新结果刷新显示,包装是可能的等等,
您必须操纵原始键盘事件才能使其正常工作。
(defun underscore ()
(interactive)
(isearch-unread-key-sequence (list ?_)))
(define-key isearch-mode-map (kbd "M-u") 'underscore)
请注意,此代码不健全;例如,数字前缀不起作用。
编辑:在我脑海中渗透了一段时间之后,我发现这是translation keymaps的确切用例
(define-key key-translation-map (kbd "M-u") (kbd "_"))
Emacs不是很盛大吗?