Come cercare / sostituire la stringa per l'intero buffer in Emacs senza tornare all'inizio?


9

È davvero scomodo tornare all'inizio del buffer e quindi eseguire la ricerca / query. Bene, per la ricerca, è relativamente semplice che puoi semplicemente premere C-sun'altra volta per concludere, ma per interrogare / sostituire, è noioso.

Qualche semplice hack per farlo senza tornare al buffer top per entrambe le operazioni?

Risposte:


6

Eh, sembra che tu non possa (preso da qui , enfasi mia):

Per sostituire ogni istanza di 'pippo' dopo il punto con 'bar', usa il comando Mx replace-string con i due argomenti fooe bar. La sostituzione avviene solo dopo il punto, quindi se vuoi coprire l'intero buffer devi prima andare all'inizio .

Personalmente, ho diviso il buffer in due ( C-x 2), vado in alto ( C-Home) e quindi eseguo il comando di sostituzione, ritorna al mio riquadro originale ( C-x o) e quindi uccido il secondo ( C-x 0). Non so se c'è un trucco per renderlo più semplice.


4
(defun my-replace-string ()
  (interactive)
  (save-excursion
    (beginning-of-buffer)
    (call-interactively 'replace-string)))

Funziona bene, ma rovina la query-sostituzione su area / selezione (lo fa sempre sull'intero buffer).
Alex


0

Sto usando di seguito per lavorare con Emacs 24+:

;; query replace all from buffer start
(fset 'my-query-replace-all 'query-replace)
(advice-add 'my-query-replace-all
            :around
            #'(lambda(oldfun &rest args)
               "Query replace the whole buffer."
               ;; set start pos
               (unless (nth 3 args)
                 (setf (nth 3 args)
                       (if (region-active-p)
                           (region-beginning)
                         (point-min))))
               (unless (nth 4 args)
                 (setf (nth 4 args)
                       (if (region-active-p)
                           (region-end)
                         (point-max))))
               (apply oldfun args)))
(global-set-key "\C-cr" 'my-query-replace-all)

Per quanto riguarda il caso di sostituzione della regione, è stato superato qualsiasi argomento START ed END.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.