web-dev-qa-db-fra.com

Éditeur de texte avec recherche de plusieurs motifs et remplacement immédiat?

Je recherche un éditeur de texte graphique capable de rechercher et de remplacer plusieurs motifs en une seule 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 (impossible autrement).

J'ai besoin de: coller le texte du presse-papiers (5 à 50 mots au plus) dans l'éditeur de texte, cliquer sur le bouton 'remplacer' avec un ensemble de 10 motifs de remplacement prédéfinis et copier le résultat dans le presse-papiers. Cette séquence sera faite environ 3000 fois ...

8
alwaysask

... pourquoi ne pas utiliser un script? Vérifiez xclip (Sudo apt-get install xclip)

 xclip -o -selection clipboard  

enverra le presse-papier à la sortie standard et avec -i vous pourrez remplacer le presse-papier. Alors

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

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

Si vous voulez quelque chose de 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 un dialogue comme ceci:

YAD example

Notez que le script va à la fois modifier le tampon du presse-papier (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 le changement que vous souhaitez appliquer.

  4. Le texte apparaîtra dans l'éditeur. Si c'est bon tel quel, vous pouvez le coller. Autrement

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

Cela pourrait certainement être optimisé (vous pouvez probablement facilement définir une autre clé pour sélectionner et coller le texte modifié, de sorte que vous ayez encore moins de touches à utiliser)

13
Rmano

Vous pouvez faire tout cela en ligne de commande en utilisant toujours quelque chose comme xsel ou xclip pour récupérer le presse-papiers actuel, puis y insérer le résultat. Voici un petit exemple montrant que sed est 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

Renvoie 123

5
Oli

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

# apt-get install gvim

Avec cet éditeur de texte, vous pouvez pratiquement tout faire. Il est basé sur des raccourcis clavier tels que i pour saisir du texte et dd pour supprimer des lignes de texte, dw pour supprimer des mots, d2w pour supprimer deux mots.

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

Et pour remplacer le texte, utilisez :s/foo/bar/g en remplaçant foo par bar ici.

3
Pascal