Je suis sur le point d'adopter Emacs pour être le seul éditeur que j'utilise dans tout ce que j'écris, y compris les documents LaTeX. Je venais de l'éditeur WYSIWYG qui servait cet objectif assez bien, à savoir TexStudio ou TXS pour faire court. Pour la transition de TXS à Emacs, il me manque encore la façon dont TXS traite de l'exécution de la recherche de requête regexp massive et remplace par la mise en évidence des correspondances et de la restriction de la recherche aux seuls .tex
fichiers liés au projet . Cela me manque profondément dans Emacs maintenant. Voir une capture d'écran de TXS ci-dessous:
Requête TeXStudio dans un projet LaTeX multifichier
Je voudrais souligner les points du workflow à réaliser dans Emacs:
- Recherche et remplacement de requêtes RegExp uniquement dans les
.tex
fichiers liés au projet . - Mettre en évidence les matchs
- Un aperçu des résultats mis en surbrillance tous ensemble dans une mise en page gérable (similaire à la vue du journal
Magit
dans Emacs lorsque vous appuyez surl
suivi par un autrel
ou tout simplement commeC-x d
en mode Dired - Comment savoir combien de correspondances de remplacement ou d'inspection ont été effectuées avec ou restantes et un moyen de reprendre la requête au cas où elle serait interrompue par une frappe maladroite qui arrête la requête
- Un moyen propre de sortir de cette requête compliquée en fermant et en enregistrant tous les fichiers associés et en revenant à l'état avant d'appeler cette requête
J'ai lu ce post mais mon intention est d'être plus comme CW
ça n'importe qui peut partager son meilleur workflow pour faire ce travail commun. Ma ou mes approches actuelles comme suit:
Premier workflow
- Le mode fatigué
% g
marquera tous les fichiers contenant cette expression régulière. Inconvénients: cela inclura même un fichier sans rapport avec le projet, y compris des fichiers non .tex. C-x 3
ouvre un nouveau tampon tout en gardant un œil sur le premier tampon comme aperçu de l'orientation des fichiers marqués que je dois interroger individuellement dans le nouveau tampon- Exécution de la requête par
C-c q
. Il a de très bons commutateurs comme!
remplacer tout sans demander de surligner les correspondances dans le fichier ouvert. Mais cela signifie que je dois exécuter la même requête à chaque fois et pour chaque fichier marqué. - Après avoir fait tous les fichiers marqués, je frappe
C-x s !
pour tout enregistrer en une seule touche. Phew!
Deuxième workflow - préféré
- Marquer tous les
.tex
fichiers à l'aide% m
du mode Dired par regexp afin de ne marquer que les.tex
fichiers, donc en gros\.tex
, m'y amènera. C-x 3
comme ci-dessus pour conserver un tampon pour la vue d'ensemble et l'autre pour la requête- L'exécution
Q
dans Dired qui est une requête remplace l'expression régulière dans les fichiers marqués uniquement. Alternativement, ilA
s'agit uniquement d'une requête de recherche d'expression régulière. Une requête complète sera exécutée et un menu d'aide par?
généreusement fourni C-x s !
enregistrer et fermer tout le gâchis. Sinon, j'ai dû fermer les fichiers ouverts un par un, ce qui est fastidieux. J'espère qu'il existe un moyen de fermer uniquement ceux que nous avons dérangés.
Comment estimer la requête de recherche / remplacement d'expressions rationnelles de TXS dans plusieurs fichiers?
Remarque
- Emacs 24.4 sur Windows 7
la source
Réponses:
Si j'ai bien compris, vous souhaitez rechercher des modèles de texte dans votre projet, vous pouvez alors utiliser Projectile avec Helm.
Voici une démo de
helm-projectile-grep
:Vous pouvez enregistrer dans un tampon séparé pour vous y référer ultérieurement en utilisant
Save results in grep buffer
action` (vous basculez vers le tampon d'action en utilisant TAB, par défaut).Si vous n'avez pas entendu parler de Helm, vous pouvez lire mon tutoriel Helm . Visitez mon didacticiel Helm Projectile pour plus de démos et de conseils sur Helm Projectile.
Alternativement, vous pouvez également utiliser
rgrep
, qui est intégré:Search for:
invite, c'est-à-dire "test"Search for "test" in file:
, c.-à-d*.tex
.rgrep
).Une
rgrep
démo:Concernant vos critères:
Helm et
rgrep
prennent en charge cette fonctionnalité.Comme ci-dessus.
Comme ci-dessus.
Si vous souhaitez remplacer des correspondances, vous pouvez utiliser wgrep pour effectuer le remplacement d'un
*Grep*
tampon. Une fois que vous avez terminé et synchronisé le*Grep*
tampon, tout sera remplacé selon le texte que vous avez remplacé.Vous "reprenez" en exécutant à nouveau la requête si vous l'arrêtez accidentellement. Mais en utilisant Helm, vous avez une
helm-resume
commande qui vous ramène à l'opération précédente en cours si vous l'annulez accidentellement.En fait, vous n'avez pas à tuer de tampon si vous utilisez des outils comme helm-mini . La gestion de milliers de tampons ouverts est un jeu d'enfant: vous pouvez vous limiter à vos tampons désirés avec un court modèle de texte. Vous pouvez tuer tout d'un coup si vous le souhaitez.
Voici une démo de
helm-mini
:Voir l'explication détaillée dans la page Helm Github, dans la section "Utilisation avancée" .
la source
projectile
,helm
ethelm-projectile
est évident, quoi d' autre? De plus, il y a deux paquets MELPAhelm-pojectile
ethelm projectile-all
des recommandations ici?Installation
section dans mes guides Helm et Helm Projectile.rgrep
pour visiter les occurrences de match (avant ou arrière) dans le tampon supérieur et inférieur?Si j'ai compris ce que vous vouliez, RefTeX '
reftex-isearch-minor-mode
devrait être ce que vous recherchez. D'après sa description dans le manuel:Comme indiqué par T. Verron, cela fonctionne également avec les expressions rationnelles.
Pour activer ce mode mineur dans tous les tampons * TeX, ajoutez l'une des lignes suivantes à votre fichier init
la source
M-r
sur le tampon de recherche, vous basculez vers la recherche d'expression régulière, tout comme pour la recherche régulièreisearch
.C-M-s
) fonctionne aussi.;-)
Si vous n'êtes pas au courant, vous ne pouvez ouvrir Dired que sur un ensemble particulier de fichiers (situés dans n'importe quel répertoire, n'importe où). IOW, vous pouvez utiliser Dired comme point d'entrée pour tous les fichiers d'un projet. Les fonctionnalités habituelles de Dired fonctionnent dans ce contexte: fonctionnement sur des fichiers marqués, etc.
Si vous utilisez la bibliothèque Bookmark +, vous pouvez avoir des signets Dired que vous utilisez pour vous donner différentes "vues" de différents ensembles de fichiers, leurs marquages, etc.
(Emacs Wiki est en cours de maintenance pour le moment, et pour quelques jours de plus, de sorte que ce lien est temporairement inaccessible.)
la source
C-x n n
? pouvez-vous enrichir votre réponse avec plus de détails. Merci.C-x n n
- juste une fonction Dired peu connue.C-h f dired
vous indique que vous pouvez passer comme argument une liste (par exemple absolue) de noms de fichiers (et de répertoires) au lieu d'un nom de répertoire. Voilà la clé. La bibliothèque Dired + facilite l'utilisation interactive de cette fonctionnalité. (Mais encore une fois, le wiki est temporairement fermé, donc ce lien n'est pas disponible pour le moment.)