首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Emacs中,是否可以在isearch-forward之前对输入字符串进行预处理

在Emacs中,是否可以在isearch-forward之前对输入字符串进行预处理
EN

Stack Overflow用户
提问于 2013-05-01 01:36:51
回答 1查看 150关注 0票数 1

例如,如果我在isearch-forward提示符后输入"foo spam“,如何建议isearch.el中的某些函数在搜索前将字符串转换为"foo[.?:,!]?[ \n]spam”?基本上,我想搜索文本中相邻的两个单词。我知道我可以使用isearch-forward-regexp来做这件事,但是直接键入正则表达式很痛苦,而且容易出错,而且我有很多这样的字符串要搜索。我试图理解isearch.el中的代码,但失败了。希望一些Emacs大师能帮我。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-02 00:56:22

这里有一个粗略的解释:

代码语言:javascript
复制
(defun isearch-transform-string ()
  (interactive)
  (let* ((string (replace-regexp-in-string
                  "foo" "bar" isearch-string)))
    (setq isearch-string string
          isearch-message (mapconcat 'isearch-text-char-description string ""))
    (isearch-search-and-update)))

(define-key isearch-mode-map (kbd "C-c C-t") 'isearch-transform-string)

我认为你必须在isearch-mode-map中将它绑定到一个键上;我不认为M-x在isearch-mode中工作得很好。

如果您需要更强的能力,可以使用变量isearch-search-fun-function,您可以将其设置为返回函数的函数。返回的函数用于查找下一个匹配项。

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

https://stackoverflow.com/questions/16305794

复制
相关文章

相似问题

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