Найдите и замените в целом буфере для emacs23

Я использовал emacs в течение многих лет, но ни в коем случае не эксперт. Когда я получил свой новый вирион Ubuntu, я получил последнюю версию emacs (24), но ненавидел его, так роняемый к emacs23. Это похоже на то, что я привык к тому, за исключением того, что функция находки и замены не работает, поскольку я хочу это к. Я привык к способности быть где угодно в документе, поражен % M-x, затем ввожу свои строки поиска и строки замены, совершаю нападки, входят, и замена всюду по остальной части документа. Это больше не делает этого. Если я не выберу регион, то он даже не попытается найти любые экземпляры. Если я выбрал регион, и это совершенно видимо в моем окне, это сделает поиск и замену. Если я выделил регион, который является более крупным, чем мое окно, это будет только искать и заменять в видимой части региона. Это невыносимо.

Я думаю, что это имеет некоторое отношение к 'переходному режиму метки', который идет по умолчанию в emacs23, по-видимому, и люди описывают поведение, которое я вижу. Но когда я выключаю его с переходным режимом метки M-x, или в моем .emacs файле, ничто не изменяется. Что я делаю неправильно?

0
задан 28 November 2014 в 20:01

1 ответ

Я не могу воспроизвести Вашу проблему, но могло бы случиться так, что Вам включили 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-%.

0
ответ дан 6 October 2019 в 09:11

Другие вопросы по тегам:

Похожие вопросы: