Я использовал emacs в течение многих лет, но ни в коем случае не эксперт. Когда я получил свой новый вирион Ubuntu, я получил последнюю версию emacs (24), но ненавидел его, так роняемый к emacs23. Это похоже на то, что я привык к тому, за исключением того, что функция находки и замены не работает, поскольку я хочу это к. Я привык к способности быть где угодно в документе, поражен % M-x, затем ввожу свои строки поиска и строки замены, совершаю нападки, входят, и замена всюду по остальной части документа. Это больше не делает этого. Если я не выберу регион, то он даже не попытается найти любые экземпляры. Если я выбрал регион, и это совершенно видимо в моем окне, это сделает поиск и замену. Если я выделил регион, который является более крупным, чем мое окно, это будет только искать и заменять в видимой части региона. Это невыносимо.
Я думаю, что это имеет некоторое отношение к 'переходному режиму метки', который идет по умолчанию в emacs23, по-видимому, и люди описывают поведение, которое я вижу. Но когда я выключаю его с переходным режимом метки M-x, или в моем .emacs файле, ничто не изменяется. Что я делаю неправильно?
Я не могу воспроизвести Вашу проблему, но могло бы случиться так, что Вам включили cua-режим, и это препятствует выключить переходный режим метки. Попытайтесь переключиться M-x cua-mode
, пока Вы не добрались бы , отключил , и после этого переключателя M-x transient-mark-mode
, пока Вы не добираетесь, он отключил . Тогда проверьте, решает ли это Вас проблема.
Как примечание стороны, это звучит странным для меня, что Вам нравится Emacs23 (так как Вы использовали его в течение многих лет), и ненависть Emacs24. Что пошло не так, как надо, когда Вы попробовали Emacs24?
Редактирование
Вот query-replace-regexp-to-the-end-of-buffer-or-in-a-region
defun, который делает то, что Вы хотите:
(defun query-replace-regexp-to-the-end-of-buffer-or-in-a-region (point)
"If there's a region - query replaces regexp in region,
otherwise replaces from current point to the end of buffer."
(interactive "d")
(let (start end)
(if (use-region-p)
(progn (setq start (region-beginning)) ;; then
(setq end (region-end)))
(progn (setq start point) ;; else
(setq end (point-max))))
(set-mark start)
(goto-char end)
(apply #'query-replace-regexp
(let ((common (query-replace-read-args (concat "Query replace regexp") t)))
(list (nth 0 common) (nth 1 common) (nth 2 common) (if (and transient-mark-mode mark-active) (region-beginning)) (if (and transient-mark-mode mark-active) (region-end)))))))
Просто связывают его с некоторым ключом, возможно, даже к M-%
.