如果我選擇一個區域的文本,有沒有辦法使用isearch(或其他一些搜索命令),這將允許我只在區域內搜索?我希望能夠在宏裏面使用這個技術。emacs新手問題 - 如何在一個區域內搜索
這可能很明顯,但我做了一個快速搜索,找不到方法。
如果我選擇一個區域的文本,有沒有辦法使用isearch(或其他一些搜索命令),這將允許我只在區域內搜索?我希望能夠在宏裏面使用這個技術。emacs新手問題 - 如何在一個區域內搜索
這可能很明顯,但我做了一個快速搜索,找不到方法。
您可以使用命令的這個組合:
M-x narrow-to-region
C-s SOMETEXT
M-x widen
雖然,這是一種累贅,這裏有一個新的命令自動完成以上爲您服務。
(defun isearch-forward-region-cleanup()
"turn off variable, widen"
(if isearch-forward-region
(widen))
(setq isearch-forward-region nil))
(defvar isearch-forward-region nil
"variable used to indicate we're in region search")
(add-hook 'isearch-mode-end-hook 'isearch-forward-region-cleanup)
(defun isearch-forward-region (&optional regexp-p no-recursive-edit)
"Do an isearch-forward, but narrow to region first."
(interactive "P\np")
(narrow-to-region (point) (mark))
(goto-char (point-min))
(setq isearch-forward-region t)
(isearch-mode t (not (null regexp-p)) nil (not no-recursive-edit)))
現在只是做的Mx ISEARCH進區域RET SOMETEXT,或將其綁定到自己的喜好一樣的鍵綁定:
(global-set-key (kbd "C-S-s") 'isearch-forward-region)
謝謝,特雷,這打開了一整套新的可能性;-) – Upgradingdave 2009-12-12 18:03:11
從來不知道狹窄並擴大。我多麼愛你,emacs。 – mgalgs 2011-07-21 23:11:04
至於三分球傑克遜說,你可以使用narrow-to-region
和widen
。我會切入鍵盤快捷鍵。請注意,它們在默認情況下處於禁用狀態,emacs將在第一次使用時交互式提示「禁用」它們。
C-x n n
C-s sometext
C-x n w
非常感謝,SO又來了。 – Upgradingdave 2009-12-12 18:04:25
我在我的.emacs中有一個(全局設置鍵「\ C-xn」'other-window)至少10年,不知道它影響了這些。謝謝。 – 2009-12-14 23:38:13
任何時候你問一個關於emacs的問題,準備回答「只用vi」。 ;-) – 2009-12-12 15:52:28
@dave 反之亦然 – vedang 2009-12-12 16:41:02
@Dave - Rodger那。我已經使用vi 5年了,並決定嘗試emacs。我只用了一個星期,但我不得不說,我很喜歡它到目前爲止... – Upgradingdave 2009-12-12 18:10:31