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的新手。谢谢,请原谅我的英语不好!:)
有一个非常简单的软件包,名为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 支持。希望有一天我(或其他人)能抽出时间来解决这个问题。