Texteditor mit Multi-Pattern-Suche und sofort ersetzen?

8

Ich suche einen GUI-Texteditor, der in der Lage ist, mehrere Muster gleichzeitig zu suchen und zu ersetzen. Wenn die Quelle eine Textdatei wäre, kann dies im Befehlszeilenmodus mit erfolgen sed, der Text stammt jedoch aus der Zwischenablage (auf keine andere Weise möglich).

Ich muss: den Text aus der Zwischenablage (höchstens 5-50 Wörter) in den Texteditor einfügen, auf die Schaltfläche "Ersetzen" mit einem Satz von 10 vordefinierten Ersetzungsmustern klicken und das Ergebnis in die Zwischenablage kopieren. Diese Sequenz wird ungefähr 3000 Mal durchgeführt ...

immer fragen
quelle
Gehört dies nicht zu den Softwareempfehlungen der Stack Exchange-Site ?
Peter Mortensen
Ich habe einen Texteditor erstellt, der vollständige reguläre Ausdrücke im Python-Stil verwendet (unter Verwendung des Python-Regex-Moduls). Es ermöglicht auch die Verwendung von Nummerngruppen zum Ersetzen und sogar die Verwendung benutzerdefinierter Funktionen zum Ersetzen. Ich habe es noch nicht veröffentlicht, aber ich arbeite daran, es für die Veröffentlichung vorzubereiten. Erinnern Sie mich daran, Sie auf dem Laufenden zu halten, wenn Sie interessiert sind, wenn ich nichts sage. Es ersetzt alles auf einmal oder eine Sache nach der anderen oder alles nach oder vor dem Einfügen von Text.
Brōtsyorfuzthrāx
@PeterMortensen Dieser Abschnitt befindet sich noch in der Beta. Wenn ich mir die letzten 50 Fragen zu diesem Zeitpunkt (Android, Spiele, MSWord ...) und die gegebenen Antworten anschaue, würde ich NICHT sagen.
Alwaysask
@ user2962794 Ich freue mich, viel Glück!
Alwaysask

Antworten:

13

... warum nicht ein Skript verwenden? Check xclip( sudo apt-get install xclip)

 xclip -o -selection clipboard  

sendet die Zwischenablage an die Standardausgabe und mit können -iSie die Zwischenablage ersetzen. Damit

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

Die Änderung wird auf die Auswahl angewendet, und jetzt können Sie sie einfügen.

Wenn Sie eine grafische Darstellung wünschen, können Sie das Skript mit yad einbetten :

#! /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

Das zeigt Ihnen einen Dialog wie diesen:

YAD Beispiel

Beachten Sie, dass das Skript sowohl den Puffer in der Zwischenablage (Einfügen) ändert als auch druckt. Um dies beispielsweise in einen Editor einzubetten vim, können Sie Folgendes tun:

  1. Fügen Sie Ihrem hinzu .vimrc:

    nmap <F4> :r ! /path/to/the/script <CR>
    
  2. Führen Sie zum Beispiel gvim aus.

  3. Jetzt kopieren Sie den Text, gehen zum Editor und drücken F4. Wählen Sie die Änderung aus, die Sie anwenden möchten.

  4. Der Text wird im Editor angezeigt. Wenn es in Ordnung ist, können Sie es einfügen. Andernfalls

  5. Bearbeiten Sie den Text und kopieren Sie ihn erneut. (In gvimkönnen Sie den Text mit der Maus auswählen und einfach Einfügen auswählen --- oder die vimBefehle lernen , was auch immer).

Es könnte sicher optimiert werden (Sie können wahrscheinlich leicht eine andere Taste definieren, um den geänderten Text auszuwählen und einzufügen, so dass Sie noch weniger Tastendruck verwenden müssen).

Rmano
quelle
Dies ist so ziemlich das, was jetzt verwendet wird, aber ich muss das Ergebnis überprüfen, bevor ich den Text in die Zwischenablage kopiere, und manchmal einige manuelle Änderungen vornehmen (und das schnell). Schöne Antwort, aber es muss ein Texteditor sein.
Alwaysask
Hmmm, ja, ich verstehe. Mal sehen ...
Rmano
Nett. Es ist ein bisschen besser / schneller als ich es derzeit tue. Vielen Dank. Ich habe abgestimmt, aber das Q bleibt erhalten - ein Texteditor mit integrierter Funktion zum Ersetzen von Text mit mehreren Mustern. Auch als Plugin für gedit oder ähnliches.
Alwaysask
5

Sie können dies alles in der Befehlszeile tun, indem Sie noch etwas wie xseloder verwenden xclip, um die aktuelle Zwischenablage abzurufen und das Ergebnis dann wieder in die Zwischenablage einzufügen. Hier ist ein kleines Beispiel, das zeigt sed, wie mehrere Ersetzungen durchgeführt werden.

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

Kehrt zurück 123

Oli
quelle
Wie ich in meinem Kommentar zur anderen Antwort sagte, würde ich einen Texteditor bevorzugen.
Alwaysask
3

Ich präsentiere Ihnen den Vim-Editor! (oder Gvim für die grafische Implementierung)

# apt-get install gvim

Mit diesem Texteditor können Sie so ziemlich alles machen. Es basiert auf Tastaturkürzeln wie izum Eingeben von Text und ddzum Löschen von Textzeilen, dwzum Löschen von Wörtern und d2wzum Löschen von zwei Wörtern.

In Ihrem Fall: Um Ihren Text aus der Zwischenablage einzufügen, verwenden Sie "*p

Und um Text zu ersetzen, :s/foo/bar/gersetzen Sie hier foo durch bar.

Pascal
quelle
1
Sie können auch eine Reihe von Befehlen verketten |, indem Sie beispielsweise Folgendes verwenden : :%s/foo/bar/g | %s/brown/fox/g | %s/lorum/ipsun/g. Oder fügen Sie die Befehle zeilenweise in eine Datei ein und verwenden Sie sie :source commandfile.vim, um die Befehle auszuführen. Oder erstellen Sie ein Makro ...
Evilsoup
Vim war nie zu ansprechend für mich (ich bin verwöhnt, ja), aber ich werde es so schnell wie möglich versuchen und sehen, ob / wie es die Arbeit erledigt.
Alwaysask