7
votes

Copie Emacs avec regex

J'ai un fichier texte. Est-ce que EMACS peut sélectionner du texte en fonction de la regex et de la mettre en sonnerie, de sorte que je puisse le copier ailleurs? Quelque chose comme Regex-Kill-Ring-Save?


0 commentaires

3 Réponses :


2
votes

Je ne suis pas sûr de savoir s'il y a déjà une telle fonction, mais ce que vous pouvez le faire avec une macro du clavier:

  1. Démarrez l'enregistrement d'une macro KBD: C-X (
  2. Recherchez votre REGEXP avec Recherche-Forward-REGEXP
  3. passer au début de votre match (le texte que vous souhaitez tuer) avec les différentes commandes de navigation EMACS, par ex. Recherche ou Backward-Word etc.
  4. Mark: C-SPC
  5. passer à la fin de votre match
  6. Tuez le texte: c-w

    Vous pouvez ensuite nommer la macro du clavier avec MX nom-kbd-macro de sorte que vous puissiez exécuter la macro avec un nom plutôt que avec CX E . < / p>

    Si vous souhaitez enregistrer la macro pour les sessions futures, vous pouvez ouvrir votre .emacs et insérer la macro dans le tampon avec m-x insert-kbd-macro . Après que vous puissiez lier une clé à la macro, comme vous, comme vous, liez les touches des fonctions EMACS normales, par exemple. (touche globale-clé "\ C-C m" 'Funky-macro-macro) .

    En savoir plus sur les macros du clavier EMACS


0 commentaires

5
votes

Inspiré des commentaires déjà donnés (la réponse Charles ne fonctionne pas comme je le souhaiterais), j'ai ajouté une nouvelle fonction à la carte du mode ISEARCH / ISEARCH-REGEXP qui ne met que la chaîne correspondante dans la bague Kill (alors que Charles proposition tue du point de courant à la fin de la chaîne correspondante): xxx

La bonne chose à propos de l'approche ISEARCH / ISEARCH-REGEXP (que vous pouvez activer avec CS et cms respectivement) est que vous pouvez voir votre chaîne de recherche en croissance et vous pouvez le copier avec MW dès que vous êtes satisfait (et revenir à l'endroit où vous avez été auparavant Cu C-Space ).

Cela fonctionne pour moi avec EMACS 23.1. Je ne sais pas si cela fonctionnera dans toutes les situations. Quoi qu'il en soit, j'espère que vous le trouverez utile :)

MISE À JOUR: PARTICULER L'EMACSWIKI J'ai trébuché sur killiséarchmatch qui suggère plus ou moins la même chose (plus quelques conseils ...).

acclamations, Daniel


1 commentaires

Merci, c'est ce que je voulais, mais je ne pouvais pas faire depuis que je suce à Lisp.



1
votes

isarch + fait déjà cela. Il définit éventuellement la région autour de la cible de recherche. Vous pouvez utiliser C-SPC C-SPC ou M- = C-SPC à tout moment pendant ISECH pour basculer ceci.

ISEARCHP-DIACTIVATE-REGION-SOP est une variable définie dans iSearch + .el .

sa valeur est t

Documentation:

Non-NIL signifie isarching désactive la région.

Voir aussi l'option iSearchP-restrice-to-région-drapeau . Vous pouvez basculer cette option à l'aide de M- = C-SPC Pendant ISEARCH.

Vous pouvez personnaliser cette variable.


0 commentaires