Estoy a punto de adoptar Emacs para ser el único editor que uso en todo lo que estoy escribiendo, incluidos los documentos de LaTeX. Vengo del editor WYSIWYG que cumplió con ese propósito bastante agradable, es decir, TexStudio o TXS para abreviar. Para la transición de TXS a Emacs, todavía me falta la forma en que TXS trata de ejecutar la búsqueda y reemplazo masivo de consultas regexp con resaltar las coincidencias y restringir la búsqueda solo a los .tex
archivos relacionados con el proyecto . Echo mucho de menos eso en Emacs ahora. Vea una captura de pantalla de TXS a continuación:
TeXStudio Query en un proyecto LaTeX multifile
Me gustaría enfatizar los puntos en el flujo de trabajo a lograr en Emacs:
- RegExp Query Search and Replacement solo en los
.tex
archivos relacionados con el proyecto . - Destacando los partidos
- Una visión general de los resultados resaltados en un diseño manejable (similar a la vista de registro de
Magit
Emacs cuando presional
seguido de otrol
o simplemente comoC-x d
en modo Dired - Cómo saber cuántas coincidencias de reemplazo o inspección realizadas con o restantes y una forma de reanudar la consulta en caso de que se rompa por una torpe pulsación de tecla que detiene la consulta
- Una forma limpia de salir de esta consulta desordenada al cerrar y guardar todos los archivos relacionados y volver al estado antes de invocar esta consulta
Leí esta publicación, pero mi intención es ser más como para CW
que cualquiera pueda compartir su mejor flujo de trabajo para hacer este trabajo común. Mi enfoque actual es el siguiente:
Primer flujo de trabajo
- El modo directo
% g
marcará todos los archivos que contengan esa expresión regular. Contras: esto incluirá incluso archivos no relacionados con el proyecto, incluidos archivos que no sean .tex. C-x 3
abre un nuevo búfer mientras mantengo un ojo en el primer búfer como mi visión general de orientación de los archivos marcados que tengo que consultar en el nuevo búfer individualmente- Ejecutando la consulta por
C-c q
. Tiene interruptores muy agradables como!
reemplazar todo sin preguntar más resaltar coincidencias dentro del archivo abierto. Pero esto significa que tengo que ejecutar la misma consulta cada vez y para cada archivo marcado. - Después de hacer todos los archivos marcados, presioné
C-x s !
para guardar todo en una sola pulsación. ¡Uf!
Segundo flujo de trabajo: preferido
- Marcar todos los
.tex
archivos usando% m
dentro del modo Dired mediante regexp para marcar solo.tex
archivos, por lo que, básicamente, la ejecución\.tex
me llevará allí. C-x 3
igual que el anterior para mantener un búfer para visión general y el otro para consulta- La ejecución
Q
dentro de Dired, que es la consulta, reemplaza regexp solo en archivos marcados . Alternativamente,A
solo es una consulta de búsqueda regexp. Se ejecutará una consulta completa y?
se proporcionará generosamente un menú de ayuda C-x s !
guardar y cerrar todo el desorden. De lo contrario, tuve que cerrar los archivos abiertos uno por uno, lo cual es tedioso. Espero que haya una manera de cerrar solo a aquellos a quienes molestamos.
¿Cómo puedo aproximar la consulta de búsqueda / reemplazo de expresiones regulares de TXS en múltiples archivos?
Nota
- Emacs 24.4 en Windows 7
fuente
Respuestas:
Si entendí correctamente, desea buscar patrones de texto en su proyecto, entonces puede usar Projectile junto con Helm.
Aquí hay una demostración de
helm-projectile-grep
:Puede guardar en un búfer separado para referirse más tarde usando
Save results in grep buffer
action` (cambia a buffer de acción usando TAB, por defecto).Si no has oído hablar de Helm, puedes leer mi tutorial de Helm . Visite mi tutorial de Helm Projectile para obtener más demostraciones y orientación sobre Helm Projectile.
Alternativa, también puede usar
rgrep
, que está integrado:Search for:
solicitud, es decir, "prueba"Search for "test" in file:
, es decir*.tex
.rgrep
).Una
rgrep
demostración:Con respecto a sus criterios:
Helm y
rgrep
soportan esta característica.Lo mismo que arriba.
Lo mismo que arriba.
Si desea reemplazar las coincidencias, puede usar wgrep para realizar el reemplazo de un
*Grep*
búfer. Una vez que termine y sincronice el*Grep*
búfer, todo se reemplazará de acuerdo con el texto que reemplazó.Usted "reanuda" ejecutando la consulta nuevamente si la detiene accidentalmente. Pero al usar Helm, tiene un
helm-resume
comando que lo reanuda a la operación anterior si la cancela accidentalmente.En realidad, no tiene que matar ningún búfer si usa herramientas como helm-mini . Administrar miles de buffers abiertos es muy sencillo: puede reducir sus buffers deseados con un patrón de texto corto. Puedes matar a todos a la vez si quieres.
Aquí hay una demostración de
helm-mini
:Consulte la explicación detallada en la página Helm Github, en la sección "Uso avanzado" .
fuente
projectile
,helm
yhelm-projectile
es obvio, ¿qué más? Además, ¿hay dos paquetes de MELPAhelm-pojectile
yhelm projectile-all
alguna recomendación aquí?Installation
sección en mis guías de Helm and Helm Projectile.rgrep
para visitar las coincidencias (hacia adelante o hacia atrás) en el búfer superior e inferior?Si entendí lo que quieres, RefTeX '
reftex-isearch-minor-mode
debería ser lo que buscas. De su descripción en el manual:Según lo informado por T. Verron, esto también funciona con expresiones regulares.
Para habilitar este modo menor en todos los búferes * TeX, agregue una de las siguientes líneas a su archivo init
fuente
M-r
en el búfer de búsqueda cambia a búsqueda de expresiones regulares, al igual que lo hace para regularisearch
.C-M-s
) también funciona.;-)
En caso de que no lo sepa, puede abrir Dired solo en un conjunto particular de archivos (ubicados en cualquier directorio, en cualquier lugar). IOW, puede usar Dired como punto de entrada para todos los archivos de un proyecto. Las características habituales de Dired funcionan en este contexto: operar en archivos marcados, etc.
Si usa la biblioteca Bookmark +, entonces puede tener marcadores Dired que use para darle diferentes "vistas" de diferentes conjuntos de archivos, sus marcas, etc.
(Emacs Wiki está inactivo por mantenimiento actualmente, y por unos días más, por lo que ese enlace está temporalmente inaccesible).
fuente
C-x n n
? ¿Puede por favor enriquecer su respuesta con más detalles? Gracias.C-x n n
, solo una característica poco conocida de Dired.C-h f dired
le dice que puede pasar como argumento una lista de nombres (por ejemplo, absolutos) de archivo (y directorio) en lugar de un nombre de directorio. Esa es la clave Library Dired + facilita el uso de esta forma interactiva. (Pero, de nuevo, la wiki es temporalmente, de modo que enlazan demasiado no está disponible en este momento.)