it-swarm.com.de

Wie schreibe ich ein Makro für Notepad ++?

Ich möchte ein Makro für Notepad ++ schreiben, das Char 1, Char 2, Char 3 durch Char4, Char5, Char6 bzw. .. ersetzen soll. Vielen Dank

30
Igor Drincic

Makros in Notepad ++ sind nur eine Reihe verschlüsselter Operationen: Sie beginnen mit der Aufnahme, bearbeiten den Puffer, aktivieren möglicherweise Menüs, stoppen die Aufnahme und spielen dann das Makro ab.
Nach einer Untersuchung habe ich herausgefunden, dass sie in der Datei shortcuts.xml im Abschnitt Macros gespeichert sind. Zum Beispiel habe ich dort:

<Macro name="Trim Trailing and save" Ctrl="no" Alt="yes" Shift="yes" Key="83">
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
    <Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
    <Action type="2" message="0" wParam="42024" lParam="0" sParam="" />
    <Action type="2" message="0" wParam="41006" lParam="0" sParam="" />
</Macro>

Ich habe mir die Quelle nicht angesehen, aber aus dem Blick heraus würde ich sagen, dass wir Nachrichten an Scintilla (die Bearbeitungskomponente, vielleicht 0 und 1) und Notepad ++ selbst (wahrscheinlich Menüelemente aktivierend) gesendet haben.
Ich glaube nicht, dass Aktionen in Dialogen (wie Suchen/Ersetzen) aufgezeichnet werden.

Wenn Sie die Datei Scintilla.iface betrachten, können wir sehen, dass 2170 der Code von ReplaceSel ist (dh Einfügen von Zeichenfolgen ist nicht ausgewählt), 2327 ist Tab-Befehl, und Resource Hacker (einfach griffbereit) dass 42024 der Menüpunkt "Trailing Space abschneiden" und 41006 "Save" ist.
Ich denke, Aktionstyp 0 ist für Scintilla-Befehle mit numerischen Parametern, Typ 1 für Befehle mit Zeichenfolgenparameter, 2 für Notepad ++ - Befehle.

Problem: Scintilla hat keinen Befehl "Alle ersetzen": Es ist die Aufgabe des Clients, die Iteration mit oder ohne Bestätigung durchzuführen.
Ein weiteres Problem: Die Aktion Typ 1 scheint auf 1 Zeichen beschränkt zu sein (ich habe sie manuell bearbeitet, als N ++ beendet wurde, wurde sie abgeschnitten).
Ich habe ein paar Tricks ausprobiert, aber ich fürchte, eine solche Aufgabe geht über die Makrofunktionen hinaus.

Vielleicht hat SciTE mit seiner Lua-Scripting-Fähigkeit (oder Programmer's Notepad, das scheinbar mit Python skriptfähig ist) einen Vorteil ... :-)

[EDIT] Sieht aus, als hätte ich das obige Makro von diesem Thread oder einem ähnlichen Ort ... :-) Ich denke, die ersten Zeilen sind unnötig (Nebeneffekt oder Aufnahme), aber sie waren trotzdem gute Beispiele für Makrocode.

48
PhiLho

Ich fand 'Python Script' für Notepad ++ nützlicher, da ich mit dem Plugin einfache Makros in Form von Python schreiben konnte. Außerdem hat es sehr gute Dokumentation und Beispielmakros, die in Python geschrieben wurden. Wenn Sie mit Python recht vertraut sind, denke ich, dass 'Python Script' Gerechtigkeit bieten wird Weitere Informationen finden Sie unter: http://npppythonscript.sourceforge.net/

13
Sandeep

Ich habe ein Makro aufgenommen und in% APPDATA%\Notepad ++\shortcuts.xml gefunden. Es sieht aus wie im ersten Beitrag dieses Threads gepostet.

Ich benutze NPP Ver. 5.9.6.2 mit Win7.

7
Wolli

Dieser Beitrag kann Ihnen als etwas verwandtes helfen:

Verwenden von RegEX zum Präfixieren und Anhängen in Notepad ++

Angenommen, alphanumerische Wörter können Sie verwenden:

Suche = ^ ([A-Za-z0-9] +) $ Ersetzen = fähig: "\ 1"

Oder, wenn Sie nur die Zeilen markieren und "Alle ersetzen" und "In Auswahl" (mit demselben Ersetzen) verwenden möchten:

Suche = ^ (. +) $

^ zeigt auf den Zeilenanfang . $ zeigt auf das Zeilenende.

\ 1 ist die Quellenübereinstimmung innerhalb der Klammern.

1
Samiksha

Meine persönliche Erfahrung ist, dass shortcuts.xml mit den ursprünglich geladenen + später aufgezeichneten Makros und Einstellungen überschrieben wird, wenn Notepad ++ beendet wird. Sie können Notepad ++ nicht selbst zum Bearbeiten dieser Datei verwenden.

Schließen Sie Notepad ++, bearbeiten Sie die Datei shortcuts.xml mit einem anderen Tool, speichern Sie sie und starten Sie Notepad ++ neu.

0
Lerin Sonberg