首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在isearch中绑定文本插入

如何在isearch中绑定文本插入
EN

Stack Overflow用户
提问于 2012-12-27 16:49:48
回答 1查看 110关注 0票数 4

我想让M-u在我搜索时插入一个下划线( isearch -regexp和反向变体)。

都不是

代码语言:javascript
复制
(define-key isearch-mode-map (kbd "M-u") 'insert-underscore)

nor

代码语言:javascript
复制
(add-hook 'isearch-mode-hook
      (lambda ()
       (local-set-key (kbd "M-u") 'insert-underscore)
      ))

insert-underscore是我的函数,它简单地插入"_“。它可以在主框架中工作,也可以在minibuffer中工作,但我不能让它在搜索中工作。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-28 00:15:14

Isearch不使用常规命令。在isearch-mode-map中,(kbd "_")和其他所有可打印字符都绑定到一个特殊的命令。这并不明显,但当你按下一个键时,在"isearch-mode“中会发生很多事情。用新的结果刷新显示,换行是可能的,等等,

您必须操纵原始键盘事件才能使其工作。

代码语言:javascript
复制
(defun underscore ()
  (interactive)
  (isearch-unread-key-sequence (list ?_)))

(define-key isearch-mode-map (kbd "M-u") 'underscore)

请注意,此代码并不健壮;例如,数字前缀不起作用。

编辑:在我的脑海中渗透了一段时间后,我突然意识到这就是translation keymaps的用例

代码语言:javascript
复制
(define-key key-translation-map (kbd "M-u") (kbd "_"))

Emacs是不是很棒?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14051835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档