有沒有辦法給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) –