Verwenden von NppExec und Ruby zum Skripten einer neuen Makrofunktion für Notepad++

Verwenden von NppExec und Ruby zum Skripten einer neuen Makrofunktion für Notepad++

Ich arbeite in den USA und in Europa, und das Wechseln zwischen den Formaten Monat/Tag (USA) und Tag/Monat (EU) führt beim Durchsehen von Protokollen oder Notizen zu Unklarheiten (ist beispielsweise der 08.07.12 der 8. Juli oder der 7. August?).

Ich möchte die Zeitstempelfunktion von Notepad++ ändern, um das internationale Format zu verwenden

YYYY-MM-DD--DAY--HH:MM

2012-08-19--Sun--20:30

Beachten Sie, dass es ein nettes Extra wäre, wenn der Wochentag ausgeschrieben wäre, und dass man so nicht im Kalender nachschauen müsste, welcher Tag gerade ist.

Derzeit verfügt NPP nicht über diese Flexibilität. Gibt es eine Möglichkeit, dies mithilfe eines Makros oder Skripts zu tun, beispielsweise mit Ruby?

Antwort1

Erfahren Sie, wie dies mit dem NppExec-Plugin und Ruby funktioniert.

Lösung:

Ansatz: Lassen Sie den formatierten Zeitstempel von einer externen Skriptsprache (in diesem Fall Ruby) zurückgeben und von NppExec empfangen und an der Cursorposition in der aktuellen Datei einfügen, die in Notepad++ angezeigt wird.

Konfigurieren Sie zuerst die Konsole:

    npe_console v+   // set console to receive output in $(OUTPUT) variable
    npe_console d+   // set current working directory to same as current file

Geben Sie dann im Menübefehl NppExec > Ausführen den folgenden Codeausschnitt ein:

    // Diary snippet (Generates timestamp YYYY-MM-DD--DAY--HH:MM for NPP++)
    npp_console disable     // turn off output displaying to console
    // this ruby one-liner does the work
    ruby -r Date -e "dt=DateTime.now; dname = Date::ABBR_DAYNAMES[dt.wday]; puts dt.strftime(\"%Y-%m-%d--#{dname}--%H:%M\");"  
    sel_settext $(OUTPUT)   // put result at cursor in current file
    npp_console enable      // restore output displaying to console
    npp_console 0           // hide the console window

Dabei wird die Ruby-Engine verwendet, um den Zeitstempel zu generieren und ihn dort einzufügen, wo sich der Cursor in der aktuellen Datei in Notepad++ befindet. Das Ergebnis (mit einer Verzögerung von etwa 500 ms) ist der Zeitstempel:

    2012-08-20--Mon--20:16

Notiz:Obwohl dies sicherlich funktioniert, wäre es besser, wenn jemand eine Lösung hätte, die nicht auf etwas Externes angewiesen ist (in diesem Fall Ruby).


Bearbeiten: Die Lösung „produzieren“ … (Robustheit und Benutzerfreundlichkeit)

Durch Befolgen der folgenden Schritte kann die obige Lösung in die Produktion umgesetzt werden ...

Eine Hürde besteht darin, dass beim Schließen von Notepad++ die Konsolenkonfiguration verloren geht, sodass diese bei jedem Neustart neu eingerichtet werden muss.

Daher haben wir die Konsolenkonfiguration als Skript eingerichtet, das bei jedem Start von Notepad++ automatisch ausgeführt wird.

Ordnen Sie dem Tagebuchskript dann der Einfachheit halber eine Tastenkombination (Hotkey) zu.

Schritt 1: Geben Sie den Tagebuchcode in ein NppExec Excute...-Dialogfeld ein und Plugins > NppExec > Execute...geben Sie ihm einen Namen (Sie werden diesen Namen später verwenden).

Schritt 1 - Tagebuchcode eingeben

Schritt 2: Geben Sie den Konfigurationscode setup_console folgendermaßen ein:

Schritt 2 - Geben Sie den Konsolenkonfigurationscode ein

Schritte 3, 4, 5: Stellen Sie in Plugins > NppExec > Advanced Optionssetup_console so ein, dass es beim Start ausgeführt wird (3), erstellen Sie ein Menüelement für den Tagebuchcode (4) und fügen Sie das Menüelement in das MacroMenü ein (5):

Schritte 3, 4 und 5 - Alles einrichten

Schritt 6:Legen Sie einen Tastaturkurzbefehl (Shortcut) für das Tagebuchskript fest: Settings > Shortcut Mapper... > Pluginsund scrollen Sie nach unten, bis Sie den Namen des von Ihnen verwendeten Tagebuchskripts finden …

Schritt 6 - Tastenkombination

Ergebnis:Unter dem MacrosMenübefehl sehen Sie Ihren neuen Zeitstempelbefehl mit Tastenkombination.

Ergebnis - erledigt

Erledigt!

verwandte Informationen