Éditeur de texte avec recherche multi-motifs et remplacement à la fois?

8

Je suis à la recherche d'un éditeur de texte GUI qui est capable de faire une recherche à motifs multiples et de remplacer tout à la fois. Si la source est un fichier texte, cela peut être fait en mode ligne de commande avec sed, mais le texte provient du presse-papiers (pas d'autre moyen possible).

Je dois: coller le texte du presse-papiers (5 à 50 mots au maximum) dans l'éditeur de texte, appuyer sur le bouton "remplacer" avec un ensemble de 10 modèles de remplacement prédéfinis et copier le résultat dans le presse-papiers. Cette séquence se fera environ 3000 fois ...

demandez toujours
la source
Après réflexion, cela n'appartient-il pas aux recommandations logicielles du site Stack Exchange ?
Peter Mortensen
J'ai fait un éditeur de texte qui fait des expressions régulières complètes de style Python (en utilisant le module regex Python). Il permet également d'utiliser des groupes de numéros pour les remplacements et permet même d'utiliser des fonctions personnalisées pour les remplacements. Je ne l'ai pas encore sorti, mais je travaille à le préparer pour la sortie. Rappelez-moi de vous tenir au courant si vous êtes intéressé, si je ne dis rien. Il remplacera tout à la fois, ou une chose à la fois, ou tout après ou avant l'insertion de texte.
Brōtsyorfuzthrāx
@PeterMortensen Cette section est toujours en version bêta. En revanche, en regardant les 50 dernières questions en ce moment (android, jeux, MSWord ...) et les réponses données, je dirais NON.
Toujours demander
@ user2962794 Pour l'avenir, bonne chance!
demander

Réponses:

13

... pourquoi ne pas utiliser un script? Cocher xclip( sudo apt-get install xclip)

 xclip -o -selection clipboard  

enverra le presse-papiers à la sortie standard, et avec -ivous pouvez remplacer le presse-papiers. Donc

 xclip -o -selection clipboard | sed "s/change this/to this/" | xclip -i -selection clipboard 

appliquera la modification à la sélection, et vous pouvez maintenant la coller.

Si vous voulez une chose graphique, vous pouvez intégrer le script avec yad :

#! /bin/bash 
#
yad --title Choose --button One:1 --button Two:2 --button Three:3
choice=$?
case $choice in
        1) 
        xclip -o -selection clipboard | 
                sed "s/one/uno/" | 
                xclip -i -selection clipboard
        xclip -o selection clipboard
        ;;
        2)      
        xclip -o -selection clipboard | 
                sed "s/two/dos/" | 
                xclip -i -selection clipboard
        xclip -o selection clipboard
        ;;
        3)
        echo "executing 3 --- well, you got the idea"
        ;;
esac

Cela vous montrera une boîte de dialogue comme celle-ci:

Exemple YAD

Notez que le script va à la fois modifier le tampon du presse-papiers (coller) et l'imprimer. Pour intégrer cela dans un éditeur, par exemple vim, vous pouvez procéder comme suit:

  1. Ajoutez à votre .vimrc:

    nmap <F4> :r ! /path/to/the/script <CR>
    
  2. exécutez par exemple gvim.

  3. Maintenant, vous copiez le texte, allez dans l'éditeur, appuyez sur F4. Choisissez la modification que vous souhaitez appliquer.

  4. Le texte apparaîtra dans l'éditeur. Si ça va comme ça, vous pouvez le coller. Autrement

  5. Modifiez le texte et copiez-le à nouveau. (Dans gvim, vous pouvez sélectionner le texte avec la souris et simplement choisir coller --- ou apprendre les vimcommandes, peu importe).

Il pourrait être optimisé à coup sûr (vous pouvez probablement facilement définir une autre clé pour sélectionner et coller le texte modifié afin que vous ayez encore moins de touches à utiliser)

Rmano
la source
C'est à peu près ce que j'utilise maintenant, mais je dois vérifier le résultat avant de copier le texte dans le presse-papiers et parfois effectuer des modifications manuelles (et le faire rapidement). Belle réponse mais il faut que ce soit un éditeur de texte.
demander
Hmmm, oui, je comprends. Voyons voir ...
Rmano
Agréable. C'est un peu meilleur / plus rapide que je ne le fais actuellement. Merci. J'ai voté mais le Q reste - un éditeur de texte avec une capacité de remplacement de texte multi-modèle intégrée. Même en tant que plugin pour gedit ou similaire.
demander
5

Vous pouvez faire tout cela sur la ligne de commande en utilisant toujours quelque chose comme xselou xclippour récupérer le presse-papiers en cours, puis y replacer le résultat. Voici un petit exemple qui montre comment sedêtre utilisé pour effectuer plusieurs remplacements.

echo -n abc | xsel -bi                               # write to clipboard
xsel -bo | sed 's/abc/def/;s/def/123/' | xsel -bi    # process it
echo $(xsel -bo)                                     # output it for testing

Retour 123

Oli
la source
Comme je l'ai dit dans mon commentaire sur l'autre réponse, je préférerais un éditeur de texte.
demander
3

Je vous présente l'éditeur Vim! (ou Gvim pour l'implémentation graphique)

# apt-get install gvim

Avec cet éditeur de texte, vous pouvez à peu près tout faire. Il est basé sur des raccourcis clavier comme ipour saisir du texte et ddpour supprimer des lignes de texte, dwpour supprimer des mots, d2wpour supprimer deux mots.

Dans votre cas: pour coller votre texte depuis le presse-papiers, utilisez "*p

Et pour remplacer le texte, :s/foo/bar/gremplacez foo par bar ici.

Pascal
la source
1
Vous pouvez également enchaîner un tas de commandes à l' aide |, par exemple: :%s/foo/bar/g | %s/brown/fox/g | %s/lorum/ipsun/g. Ou placez les commandes une ligne à la fois dans un fichier et utilisez-les :source commandfile.vimpour exécuter les commandes. Ou créez une macro ...
evilsoup
Vim n'a jamais été trop attrayant pour moi (je suis gâté, oui) mais je vais essayer le plus tôt possible et voir si / comment il fait le travail.
Toujours demander