使用扩展区域更好地在emacs中搜索

Bor*_*ris 5 emacs search expand elisp region

假设我们有以下文本:

(print "thIis-is-a-text")
Run Code Online (Sandbox Code Playgroud)

光标位于字符“ h”和“ i”之间的“ this”一词中。

在emacs中,如果输入C-s C-w,则搜索的文本为'is',

再次C-w是“是”,

再次C-w是“是是”,

再次C-w是“是文字”,

再次C-w是'IS-IS-A-文本“' ...

还有一个emacs插件扩展区域:“扩展区域以语义单位增加所选区域。只需按住该键,直到选择所需的内容。”

因此,我想C-s C-w变得更加聪明:与扩展区域结合。

光标“ h”和“ i”之间在“ this”一词中再次出现游标,我的目标是:

当我键入时C-s C-w,单词“ this”将成为要搜索的文本,

再次是“这是文本”,

再次是““这是文本””,

再次将是“打印“这是文本””,

再次是“(打印“这是文本”)),

....(表现为扩展区域,也许这不是一个好例子...)

由于我发现有时扩大区域对于搜索文本非常有用,我希望有人可以编写一些代码来帮助我实现这一目标,因为我是emacs和elisp的新手。谢谢,请原谅我的英语不好!:)

jpk*_*tta 3

有一个非常简单的软件包,名为thingopt,它使用 thingatpt 来执行类似于 Expand-Region 的操作。我已经使用修改版本有一段时间了,它增加了 isearch 支持。这个问题提醒我分叉并提出拉取请求。我的 init.el 中有以下内容:

(define-key isearch-mode-map (kbd "C-S-s") 'upward-isearch-thing)
(define-key isearch-mode-map (kbd "M-3") 'upward-isearch-thing)

(global-set-key (kbd "C-S-s") 'upward-mark-thing)
(global-set-key (kbd "M-3") 'upward-mark-thing)

(setq upward-mark-thing-list
      '(email
        url
        word
        symbol
        string
        (up-list . *)
        paragraph
        ))
Run Code Online (Sandbox Code Playgroud)

我尝试过 Expand-Region,我想我会更喜欢它,但它看起来要复杂得多,而且在开始使用它之前我必须添加 isearch 支持。希望有一天我(或其他人)能抽出时间来解决这个问题。