Search emacs新手问题-如何在区域内搜索

Search emacs新手问题-如何在区域内搜索,search,emacs,Search,Emacs,如果我选择了一个文本区域,是否有办法使用isearch(或其他搜索命令)只允许我在该区域内搜索?我希望在宏中使用这种技术 这可能是显而易见的,但我做了一个快速搜索,找不到一个方法 您可以使用以下命令组合: M-x narrow-to-region C-s SOMETEXT M-x widen 不过,这有点麻烦,这里有一个新命令,可以自动为您执行上述操作 (defun isearch-forward-region-cleanup () "turn off variable, widen"

如果我选择了一个文本区域,是否有办法使用isearch(或其他搜索命令)只允许我在该区域内搜索?我希望在宏中使用这种技术


这可能是显而易见的,但我做了一个快速搜索,找不到一个方法

您可以使用以下命令组合:

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)))
现在只需执行M-x isearch forward region RET SOMETEXT,或将其绑定到您喜欢的键绑定,如:

(global-set-key (kbd "C-S-s") 'isearch-forward-region)

正如Trey Jackson所说,您可以使用
窄到区域
加宽
。我来凑钱买键盘快捷键。请注意,它们在默认情况下是禁用的,emacs将在第一次使用时以交互方式提示“取消禁用”它们

C-x n n
C-s sometext
C-x n w

任何时候你在emacs上提问时,都要准备好回答“只需使用vi”;-)@戴夫和维克versa@Dave-罗杰。我已经使用vi 5年了,决定尝试一下emacs。我只用了一个星期,但我不得不说,到目前为止我非常喜欢它……谢谢你,特雷,这开启了一整套全新的可能性;-)从来都不知道狭窄和宽阔。我是多么爱你,emacs。应该有像
isearch region
look region
这样的东西,可以从
M-x
调用,而不会缩小然后再扩大背景。非常感谢,所以再次出现了。我在我的.emacs中有一个(全局设置键“\C-xn”其他窗口)至少10年了,不知道它隐藏了这些。谢谢