代码之家  ›  专栏  ›  技术社区  ›  Upgradingdave

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

  •  14
  • Upgradingdave  · 技术社区  · 15 年前

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

    2 回复  |  直到 15 年前
        1
  •  24
  •   Luís Oliveira    6 年前

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

    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)))
    

    现在就做吧

    (global-set-key (kbd "C-S-s") 'isearch-forward-region)
    
        2
  •  19
  •   ddaa    15 年前

    正如特雷·杰克逊所说,你可以使用 narrow-to-region widen . 我来凑钱买键盘快捷键。请注意,它们在默认情况下是禁用的,emacs将在第一次使用时以交互方式提示“取消禁用”它们。

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