Utilizzo di NppExec e Ruby per creare una nuova funzione macro per Notepad ++


8

Lavoro negli Stati Uniti e in Europa e il passaggio tra i formati mese / giorno (Stati Uniti) e giorno / mese (UE) porta a delle ambiguità quando si esaminano i registri o le note (ad es. 7/8/12, 8 o 7 agosto?).

Vorrei modificare la funzione di data e ora di Notepad ++ per utilizzare il formato internazionale

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

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

Nota, avere il GIORNO della settimana precisato sarebbe un bel extra, ed evita di cercare il giorno in un calendario.

Attualmente la centrale nucleare non ha questa flessibilità. C'è un modo per farlo usando una macro o uno script di qualche tipo, forse usando Ruby?


Quali sono i trattini tra DD & DAY e DAY & HH?
Louis Waweru,

I doppi trattini: consentono di impostare visivamente la data dal giorno dall'ora. Sembra più piacevole esteticamente di 2012-08-19-Sun-20:30. (Vorrei che il timestamp fosse una singola unità di caratteri, quindi non voglio spazi ...) Hai modificato la domanda di conseguenza.
Assad Ebrahim,

1
Dopo aver svolto un intenso lavoro di programmazione nel corso degli anni utilizzando Notepad ++ grazie al suo potente set di funzionalità, non hai idea di quante volte avrei voluto essere in grado di collegarlo con un linguaggio di scripting all'interno della GUI. Grazie per aver pubblicato questo!
Ben Richards,

Risposte:


6

Condivisione su come eseguire questa operazione utilizzando il plug-in NppExec e Ruby.

Soluzione:

Approccio : ottenere un linguaggio di scripting esterno (in questo caso Ruby) per restituire il timestamp formattato e per NppExec per riceverlo e inserirlo nella posizione del cursore nel file corrente mostrato in Notepad ++.

Per prima cosa configura la console:

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

Quindi in NppExec> Esegui comando di menu, inserisci il seguente frammento:

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

Questo utilizza il motore Ruby per generare il timestamp e lo inserisce nel punto in cui si trova il cursore nel file corrente in Notepad ++. Il risultato (con un ritardo di circa 500 ms) è il timestamp:

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

Nota: anche se questo sicuramente fa il lavoro, se qualcuno ha una soluzione che non si basa su qualcosa di esterno (in questo caso Ruby), sarebbe meglio.


Modifica: "Produrre" la soluzione ... (robustezza e convenienza)

Seguendo i passaggi seguenti, la soluzione sopra può essere prodotta ...

Un ostacolo è che la chiusura di Notepad ++ perde la configurazione della console, quindi deve essere impostata ad ogni riavvio.

Quindi impostiamo la configurazione della console come uno script che viene eseguito automaticamente ogni volta che Notepad ++ viene avviato.

Quindi associare una scorciatoia da tastiera (tasto di scelta rapida) allo script del diario per comodità.

Passaggio 1: inserisci il codice del diario in una finestra di dialogo Excute di NppExec ... Plugins > NppExec > Execute..., assegnandogli un nome (lo userai in seguito)

Passaggio 1: immettere il codice del diario

Passaggio 2: immettere il codice di configurazione setup_console in modo simile:

Passaggio 2: immettere il codice di configurazione della console

Passaggi 3, 4, 5: In Plugins > NppExec > Advanced Options, imposta setup_console per l'esecuzione all'avvio (3), crea una voce di menu per il codice diario (4) e inserisci la voce di menu nel Macromenu (5):

Passaggi 3,4,5 - Ottenere tutto impostato

Passaggio 6: imposta un tasto di scelta rapida da tastiera (scorciatoia) sullo script del diario: Settings > Shortcut Mapper... > Pluginse scorri verso il basso fino a trovare il nome dello script del diario che hai usato ...

Passaggio 6: scorciatoia da tastiera

Risultato: guardando il Macroscomando di menu, vedrai il tuo nuovo comando Timestamp con scorciatoia da tastiera.

Risultato: fatto

Fatto!

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.