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

8

Ich arbeite in den USA und in Europa, und das Umschalten zwischen den Formaten Monat / Tag (USA) und Tag / Monat (EU) führt zu Unklarheiten beim Durchsuchen von Protokollen oder Notizen (z. B. am 08.07.12, 8. oder 7. August?).

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

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

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

Beachten Sie, dass die Angabe des Wochentags ein nettes Extra wäre und Sie nicht nachschlagen müssen, welcher Tag in einem Kalender war.

Derzeit verfügt das KKW nicht über diese Flexibilität. Gibt es eine Möglichkeit, dies mit einem Makro oder Skript zu tun, vielleicht mit Ruby?

Assad Ebrahim
quelle
Was sind die Striche zwischen DD & DAY und DAY & HH?
Louis Waweru
Die doppelten Striche - dienen dazu, das Datum vom Tag bis zur Uhrzeit visuell abzugrenzen. Scheint ästhetisch ansprechender als 2012-08-19-Sun-20:30. (Möchte, dass der Zeitstempel eine einzelne Zeicheneinheit ist, möchte daher keine Leerzeichen ...) Haben Sie die Frage entsprechend bearbeitet.
Assad Ebrahim
1
Nachdem Sie im Laufe der Jahre mit Notepad ++ aufgrund seiner sofort einsatzbereiten, leistungsstarken Funktionen umfangreiche Codierungsarbeiten durchgeführt haben, wissen Sie nicht, wie oft ich in der Lage sein wollte, eine Skriptsprache über die GUI zu verwenden. Danke, dass du das gepostet hast!
Ben Richards

Antworten:

6

Teilen, wie dies mit dem NppExec-Plugin und Ruby gemacht wird.

Lösung:

Vorgehensweise : Rufen Sie eine externe Skriptsprache (in diesem Fall Ruby) ab, um den formatierten Zeitstempel zurückzugeben, und NppExec empfängt ihn und fügt ihn an der Cursorposition in der aktuellen Datei ein, 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 unter NppExec> Menübefehl Ausführen das folgende Snippet 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

Dies verwendet die Ruby-Engine, 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 ca. 500 ms) ist der Zeitstempel:

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

Hinweis: Dies ist sicherlich der Fall, aber wenn jemand eine Lösung hat, die sich nicht auf etwas Externes stützt (in diesem Fall Ruby), wäre dies besser.


Bearbeiten: "Produktion" der Lösung ... (Robustheit und Bequemlichkeit)

Durch Befolgen der folgenden Schritte kann die obige Lösung hergestellt werden ...

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

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

Verknüpfen Sie dann zur Vereinfachung eine Tastaturkürzel (Hotkey) mit dem Tagebuchskript.

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

Schritt 1 - Geben Sie den Tagebuchcode ein

Schritt 2: Geben Sie den Konfigurationscode setup_console auf ähnliche Weise ein:

Schritt 2 - Geben Sie den Konsolen-Konfigurationscode ein

Die Schritte 3, 4, 5: In Plugins > NppExec > Advanced Options, Set setup_console beim Start (3) auszuführen, erstellen Sie einen Menüpunkt für den Tagebuch - Code (4), und setzen Sie den Menüpunkt in das MacroMenü (5):

Schritte 3,4,5 - Alles einrichten

Schritt 6: Setzen Sie einen Tastatur-Hotkey (Verknüpfung) auf das Tagebuchskript: Settings > Shortcut Mapper... > Pluginsund scrollen Sie nach unten, bis Sie den Namen des Tagebuchskripts finden, den Sie verwendet haben ...

Schritt 6 - Tastenkombination

Ergebnis: Wenn Sie unter dem MacrosMenübefehl nachsehen, sehen Sie Ihren neuen Zeitstempelbefehl mit Tastenkombination.

Ergebnis - fertig

Erledigt!

Assad Ebrahim
quelle