Comment rechercher / remplacer une chaîne pour tout le tampon dans Emacs sans revenir au début?


9

Il est vraiment gênant de retourner d'abord au sommet du tampon, puis de faire la recherche / requête. Eh bien, pour la recherche, il est relativement simple que vous puissiez simplement appuyer C-sune fois de plus pour boucler, mais pour la requête / remplacement, c'est fastidieux.

Un simple hack pour le faire sans retourner au sommet du tampon pour les deux opérations?

Réponses:


6

Huh, on dirait que tu ne peux pas (tiré d' ici , c'est moi qui souligne):

Pour remplacer chaque instance de 'foo' après le point par 'bar', utilisez la commande Mx replace-string avec les deux arguments fooet bar. Le remplacement ne se produit qu'après le point, donc si vous voulez couvrir tout le tampon, vous devez d'abord aller au début .

Personnellement, je divise le tampon en deux ( C-x 2), vais en haut ( C-Home) puis exécute la commande replace, reviens à mon volet d'origine ( C-x o) puis tue le second ( C-x 0). Je ne sais pas s'il y a une astuce pour simplifier les choses.


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

Fonctionne bien, mais bousille le remplacement de requête sur la région / sélection (toujours sur tout le tampon).
Alex


0

J'ai utilisé ci-dessous pour travailler avec 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)

En ce qui concerne le cas de remplacement de région, et tous les arguments START et END passés.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.