有没有办法给isearch提供一个区域?给区域搜索emacs
我想重载ISEARCH使得:
CS - > 1. ISEARCH照常如果没有选择任何区域,OR 2. ISEARCH与区域作为待使用的换搜索字符串
例如:我'选择'单词“没有退出”,然后Cs应该搜索缓冲区“无退出”。 通过某种方式,当光标位于“否”的开头时,可以用C-s C-w C-w完成。 我不知道是否有扭转这种方式,所以首先选择(一些如何),然后使用选择搜索
有没有办法给isearch提供一个区域?给区域搜索emacs
我想重载ISEARCH使得:
CS - > 1. ISEARCH照常如果没有选择任何区域,OR 2. ISEARCH与区域作为待使用的换搜索字符串
例如:我'选择'单词“没有退出”,然后Cs应该搜索缓冲区“无退出”。 通过某种方式,当光标位于“否”的开头时,可以用C-s C-w C-w完成。 我不知道是否有扭转这种方式,所以首先选择(一些如何),然后使用选择搜索
您可能会发现命令narrow-to-region
和widen
有用的,做章˚Fnarrow-to-region
RET和章˚Fwiden
RET了解更多
UPDAT Ë
下面是一些快速和肮脏的代码做你想要什么,我还没有处理某些情况下,为简单起见,但这应该给一个想法
(add-hook 'isearch-mode-end-hook (lambda()
(when (buffer-narrowed-p)
(widen))))
(defun my-isearch(&optional start end)
(interactive "r")
(when (region-active-p)
(narrow-to-region start end))
(call-interactively 'isearch-forward-regexp))
更新2
尝试下面的函数,这应该做你想做的
(defun my-isearch(&optional start end)
(interactive "r")
(if (region-active-p)
(progn
(let ((string (buffer-substring-no-properties start end)))
(deactivate-mark)
(isearch-resume string nil nil t string nil)))
(call-interactively 'isearch-forward-regexp)))
这正是可与Isearch+(isearch+.el
)。搜索是否限制在活动区域由布尔选项isearchp-restrict-to-region-flag
控制。
您可以在搜索期间使用C-x n
(命令 isearchp-toggle-region-restriction
)切换此行为。
第二个布尔选项isearchp-deactivate-region-flag
控制在搜索过程中是否停用该区域(例如,以便您可以更好地查看搜索区域)。
默认情况下,这两个选项均为真(搜索仅限于活动区域,并且在搜索过程中该区域被禁用)。
(对于ISEARCH被限制到有源区信息,还必须使用库Info+(info+.el
)。
UPDATE
嗯,这是正是你所描述的最初是。您以后回复评论显示,您实际上不想搜索区域中的文字;你想要搜索对于该地区的文字,在其他地方的缓冲区。这是前者,而不是后者。
也许首先是“狭义的区域”? –
@Dave'狭窄的区域'听起来不错,但这可能是一个不错的功能。不幸的是,我不能仅仅在isearch的基础上进行攻击,因为它在该区域处于活动状态时已经有用。也许'isearch - * - region'会是一个很好的补充。 – pmr
可能的重复[在Emacs中搜索标记(选定)的文本](http://stackoverflow.com/questions/202803/searching-for-marked-selected-text-in-emacs) –