我想让M-u在我搜索时插入一个下划线( isearch -regexp和反向变体)。
都不是
(define-key isearch-mode-map (kbd "M-u") 'insert-underscore)nor
(add-hook 'isearch-mode-hook
(lambda ()
(local-set-key (kbd "M-u") 'insert-underscore)
))insert-underscore是我的函数,它简单地插入"_“。它可以在主框架中工作,也可以在minibuffer中工作,但我不能让它在搜索中工作。
谢谢!
发布于 2012-12-28 00:15:14
Isearch不使用常规命令。在isearch-mode-map中,(kbd "_")和其他所有可打印字符都绑定到一个特殊的命令。这并不明显,但当你按下一个键时,在"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是不是很棒?
https://stackoverflow.com/questions/14051835
复制相似问题