Me gustaría definir un conjunto de archivos dentro del cual pueda buscar y reemplazar texto.
Para aclarar:
Me gustaría poder buscar, por ejemplo, en todos los archivos xk * .tex en un directorio dado (y excluyendo los archivos de respaldo). También me gustaría poder cambiar la expresión, por ejemplo, "incertidumbre", a "indeterminación" en todos los archivos dd * .sh y ee * .cls.
¿Cuál es la forma estándar de hacer esto?

diredpara buscar y reemplazar en un subconjunto de archivos en un directorio determinado.ag,wgrepymultiple-cursors.Respuestas:
Si está trabajando en un proyecto bien definido, puede utilizar
occuregrepinstalaciones dentro de ese proyecto a travésprojectile. A partir de su descripción de Github, entre los diversos bits de funcionalidad que ofreceprojectile, puede hacer:fuente
Si todos los archivos están en el mismo directorio, puede seguir estos pasos. Basaré esto en el segundo ejemplo dado en los comentarios:
diredpara abrir el directorio relevante endiredmodo.dired-mark-files-regexpen ese directorio.^dd.*\.sh$, que es la expresión regular equivalente add*.sh. Esos archivos ahora estarán marcados con un*, y también pueden aparecer resaltados en un color diferente dependiendo de su esquema de color.^ee.*\.cls$) hasta que se marquen todos los archivos que desea editar.dired-do-query-replace-regexpen los archivos que marcó.uncertaintyyindeterminacycomo las cadenas de consulta. (Creo que esto distingue entre mayúsculas y minúsculas. Si necesita que no distinga entre mayúsculas y minúsculas, puede requerir una expresión regular, pero no estoy seguro).Y esa es la idea. Si necesita repetir esto varias veces en diferentes carpetas, puede grabar los pasos 2 a 6 como una macro (presione C-x (después del paso 1 y C-x )después del paso 6). E incluso si no te sientes muy cómodo con elisp, puedes traducir esa macro en elisp usando
insert-kbd-macroe intentar hackearla en una función útil.fuente
S-qno significashift+q, significasuper+q. Deberías escribirQsi quieres decirshift+q. Edité tu comentario para reflejar esto.S-qsignificashift+q;super+qSería escritos-q.Puede usar
M-x find-name-diredpara obtener un búfer dired que contenga enlaces a todos los archivos que coincidan con un patrón de nombre dado.Utilícelo
M-x find-grep-diredpara obtener un búfer directo que contenga aquellos archivos cuyo contenido coincida con el patrón grep proporcionado.Hay muchos más comandos de este tipo; lo que sea más apropiado depende de sus requisitos, así que considere actualizar su pregunta.
Luego puede recorrer la lista de archivos usando macros. Eche un vistazo a la respuesta de Brian para ver un ejemplo: https://emacs.stackexchange.com/a/9497/2005
fuente
Usa rgrep y wgrep.
Con rgrep puede buscar una expresión regular en archivos cuyo nombre de archivo coincida con una expresión regular y dentro de un directorio (y sus subdirecciones)
con wgrep puede editar el búfer que contiene los resultados de su búsqueda rgrep.
fuente