Editor di testo con ricerca multi-pattern e sostituzione in una sola volta?


8

Sto cercando un editor di testo con GUI in grado di fare una ricerca a più schemi e di sostituirli tutti in una volta. Se l'origine è un file di testo, può essere eseguito in modalità riga di comando con sed, ma il testo proviene dagli Appunti (nessun altro modo possibile).

Devo: incollare il testo dagli appunti (al massimo 5-50 parole) nell'editor di testo, premere il pulsante 'sostituisci' con un set di 10 schemi di sostituzione predefiniti e copiare il risultato negli appunti. Questa sequenza verrà eseguita circa 3000 volte ...


A pensarci bene, questo non appartiene ai Consigli sul software del sito Stack Exchange ?
Peter Mortensen,

Ho creato un editor di testo che esegue espressioni regolari complete in stile Python (utilizzando il modulo regex Python). Consente inoltre di utilizzare gruppi di numeri per le sostituzioni e persino di utilizzare funzioni personalizzate per le sostituzioni. Non l'ho ancora rilasciato, ma sto lavorando per prepararlo per il rilascio. Ricordami di tenerti aggiornato se sei interessato, se non dico niente. Sostituirà tutto in una volta, o una cosa alla volta, o tutto dopo o prima dell'inserimento del testo.
Brōtsyorfuzthrāx,

@PeterMortensen Quella sezione è ancora in beta. D'altra parte, guardando le 50 domande più recenti in questo momento (Android, giochi, MSWord ...) e le risposte fornite, direi di NO.
Sempre il

@ user2962794 In attesa, buona fortuna!
Sempre il

Risposte:


13

... perché non usare uno script? Verifica xclip( sudo apt-get install xclip)

 xclip -o -selection clipboard  

invierà gli appunti all'output standard e con -ivoi sarà possibile sostituire gli appunti. Così

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

applicherà la modifica alla selezione e ora puoi incollarla.

Se vuoi una cosa grafica, puoi incorporare lo script con 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

Questo ti mostrerà una finestra di dialogo come questa:

Esempio YAD

Si noti che lo script modificherà entrambi il buffer degli appunti (incolla) e lo stamperà. Per incorporarlo in un editor, ad esempio vim, puoi fare quanto segue:

  1. Aggiungi a .vimrc:

    nmap <F4> :r ! /path/to/the/script <CR>
    
  2. eseguire ad esempio gvim.

  3. Ora copi il testo, vai all'editor, premi F4. Scegli la modifica che desideri applicare.

  4. Il testo apparirà nell'editor. Se va bene così com'è, puoi incollarlo. Altrimenti

  5. Modifica il testo e copiarlo di nuovo. (In gvim, puoi selezionare il testo con il mouse e semplicemente scegliere incolla --- o imparare i vimcomandi, qualunque cosa).

Potrebbe essere ottimizzato di sicuro (probabilmente puoi facilmente definire un altro tasto per selezionare e incollare il testo modificato in modo da avere ancora meno tasti da usare)


Questo è praticamente quello che uso ora, ma ho bisogno di controllare il risultato prima di copiare il testo negli appunti e alcune volte fare alcune modifiche manuali (e farlo velocemente). Bella risposta ma deve essere un editor di testo.
Sempre il

Hmmm, sì, ho capito. Vediamo ...
Rmano,

Bello. È un po 'meglio / più veloce di quello che faccio attualmente. Grazie. Ho votato ma la Q rimane - un editor di testo con funzionalità di sostituzione del testo multi-pattern integrata. Anche come plugin per gedit o simili.
Sempre il

5

Puoi fare tutto ciò dalla riga di comando usando ancora qualcosa di simile xselo xclipper recuperare gli appunti attuali e poi reinserirci il risultato. Ecco un piccolo esempio che mostra che sedviene utilizzato per eseguire più sostituzioni.

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

ritorna 123


Come ho detto nel mio commento sull'altra risposta, preferirei un editor di testo.
Sempre il

3

Vi presento l'editor Vim! (o Gvim per l'implementazione grafica)

# apt-get install gvim

Con questo editor di testo puoi fare praticamente tutto. Si basa su scorciatoie da tastiera come iper l'immissione di testo e ddper l'eliminazione di righe di testo, dwper l'eliminazione di parole, d2wper l'eliminazione di due parole.

Nel tuo caso: per incollare il testo dagli Appunti utilizzare "*p

E per sostituire il testo usa qui la :s/foo/bar/gsostituzione del foo con la barra.


1
È inoltre possibile concatenare una serie di comandi che utilizzano |, ad esempio: :%s/foo/bar/g | %s/brown/fox/g | %s/lorum/ipsun/g. Oppure metti i comandi una riga alla volta in un file e usa :source commandfile.vimper eseguire i comandi. O crea una macro ...
evilsoup,

Vim non è mai stato troppo attraente per me (sono viziato, sì) ma ci proverò al più presto e vedrò se / come fa il lavoro.
Sempre il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.