Подтвердить что ты не робот

Emacs newbie question - как искать в регионе

Если я выбираю область текста, есть ли способ использовать isearch (или какую-либо другую команду поиска), которая позволит мне выполнять поиск только в этом регионе? Я надеялся использовать это в технике внутри макроса.

Это может быть очевидно, но я сделал быстрый поиск и не смог найти способ.

4b9b3361

Ответ 1

Вы можете использовать эту комбинацию команд:

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)

Ответ 2

Как сказал Трей Джексон, вы можете использовать narrow-to-region и widen. Я запишусь за быстрые клавиши. Обратите внимание, что они по умолчанию отключены, и emacs будут интерактивно запрашивать "unisable" их при первом использовании.

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