J'essaye de convertir un site Web en ebook, et il y a un morceau énorme de html au début de chaque page que je veux supprimer. Comme vous pouvez l'imaginer, l'utilisation de Q
ne donne aucune correspondance car quelque chose dans le gros morceau n'est pas correctement échappé. Lorsque j'essaie de résoudre le problème, j'obtiens un débordement de pile. Ce dont j'ai vraiment besoin, c'est d'un moyen de trouver et de remplacer dans dired sans regex, de la manière habituelle M-%. Est-ce possible?Rechercher et remplacer sans regexp dans dired
4
A
Répondre
6
Le comportement de l'expression rationnelle est facultatif en théorie, mais la fonction appelle en question le codage en dur de cette hypothèse dans quelques endroits. Je pense que la solution la plus simple est de faire des copies qui ne définissent pas les drapeaux de regexp quand ils s'exécutent.
(eval-after-load 'dired
'(define-key dired-mode-map (kbd "C-c Q") 'my-dired-do-query-replace))
(defun my-dired-do-query-replace (from to &optional delimited)
"Do `query-replace' of FROM with TO, on all marked files.
Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
with the command \\[tags-loop-continue]."
(interactive
(let ((common
(query-replace-read-args
"Query replace in marked files" nil t)))
(list (nth 0 common) (nth 1 common) (nth 2 common))))
(require 'dired-aux)
(dolist (file (dired-get-marked-files nil nil 'dired-nondirectory-p))
(let ((buffer (get-file-buffer file)))
(if (and buffer (with-current-buffer buffer
buffer-read-only))
(error "File `%s' is visited read-only" file))))
(my-tags-query-replace
from to delimited '(dired-get-marked-files nil nil 'dired-nondirectory-p)))
(defun my-tags-query-replace (from to &optional delimited file-list-form)
"Do `query-replace' of FROM with TO on all files listed in tags table.
Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
If you exit (\\[keyboard-quit], RET or q), you can resume the query replace
with the command \\[tags-loop-continue].
Fourth arg FILE-LIST-FORM non-nil means initialize the replacement loop.
Fifth and sixth arguments START and END are accepted, for compatibility
with `query-replace', and ignored.
If FILE-LIST-FORM is non-nil, it is a form to evaluate to
produce the list of files to search.
See also the documentation of the variable `tags-file-name'."
(interactive (query-replace-read-args "Tags query replace" nil t))
(require 'etags)
(setq tags-loop-scan `(let ,(unless (equal from (downcase from))
'((case-fold-search nil)))
(if (search-forward ',from nil t)
;; When we find a match, move back
;; to the beginning of it so perform-replace
;; will see it.
(goto-char (match-beginning 0))))
tags-loop-operate `(perform-replace ',from ',to t nil ',delimited
nil multi-query-replace-map))
(tags-loop-continue (or file-list-form t)))
Questions connexes
- 1. Javascript Regexp Rechercher et remplacer
- 2. sqlite3 syntaxe pour regexp dans "rechercher et remplacer"
- 3. Rechercher et remplacer sans changer la surbrillance?
- 4. Rechercher et remplacer sans boucle for
- 5. Rechercher et remplacer sans enregistrer la variable
- 6. Emacs: Macros clavier et Dired
- 7. dynamique remplacer l'objet RegExp sans barres obliques
- 8. Python remplacer oneliner sans utiliser regexp
- 9. Rechercher et remplacer pour Textarea
- 10. Perl rechercher et remplacer entre dans la boucle sans fin
- 11. Utilisation de la commande contenant la marque de Dired (par exemple, dired-mark-files-containing-regexp)
- 12. Rechercher et remplacer dans Shell
- 13. Rechercher et remplacer dans Vi
- 14. Rechercher et remplacer dans VBA
- 15. comment rechercher et remplacer un tel cas
- 16. SQL Rechercher et remplacer
- 17. CouchDB Rechercher et remplacer
- 18. Rechercher et remplacer "-p"
- 19. Rechercher et remplacer
- 20. chaîne Rechercher et remplacer
- 21. VS2010 Rechercher et remplacer
- 22. regex rechercher et remplacer
- 23. phpstorm regex rechercher et remplacer
- 24. Rechercher et remplacer Linux
- 25. Excel Rechercher et remplacer
- 26. Rechercher et remplacer l'algorithme
- 27. Perl regexp remplacer?
- 28. J'ai besoin d'un REGEXP en php pour rechercher et remplacer "??" dans les dates
- 29. RegExp remplacer après
- 30. Rechercher et remplacer "(" "" et "[" dans Vi - Regex
Parfait. Seul reproche (que je suis sûr que cela arrive avec l'expression rationnelle) est que lorsque vous appuyez sur! il se termine uniquement pour le tampon actuel, plutôt que pour tous les fichiers. Encore, 2 minutes de maintien! est une solution suffisante pour moi! –
Oui, c'est littéralement une copie des fonctions d'origine avec seulement quelques changements mineurs pour utiliser la fonctionnalité non-regexp (et un couple de 'require's, car l'autre code charge automatiquement les bibliothèques nécessaires). – phils