Creazione di comandi speciali per Notepad ++ utilizzando NppExec

Notepad ++ dispone di una funzionalità di timestamp incorporata con la scelta di formati brevi o lunghi, ma entrambi utilizzano il formato di data incorporato del computer in cui sono in esecuzione, mostrando il mese prima (se US) o il primo giorno (se UK / Europa).

Lavoro sia negli Stati Uniti che in Europa, e la continua commutazione del mese e del giorno diventa un po 'sconcertante, specialmente quando si guarda nei registri o nelle note.

Mi domando se ci sia un modo semplice – sia attraverso una struttura esistente, o forse con una macro di qualche tipo – per get un timestamp ugualmente veloce generato ma il formato internazionale:

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

(Avere il GIORNO della settimana presente è un bel extra e evita di whererle guardare in su in seguito quando rivedete i record più tardi.)

    Esempio:

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

    Modifica: perché questa scelta del formato? Nessuna ragione rigorosa. La soluzione ideale in Notepad ++ sarebbe preferibilmente abbastanza flessibile per consentire la generazione di un formato piacevole.

    Proprio, ho trovato un modo per utilizzare il plugin NppExec e Ruby.

    Soluzione:

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

    Per prima cosa configurare 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 command di menu, immettere il seguente snippet:

      // Diary snippet (Generates timestamp YYYY-MM-DD--DAY--HH:MM for NPP++) npp_console disable // turn console off for silent operation // 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 console back to default 

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

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

    Nota: Mentre questo certamente funziona, se qualcuno ha una soluzione che non si basa su qualsiasi cosa esterna (in questo caso Ruby), sarebbe meglio.


    Modifica: "Producendo" la soluzione … (robustezza e convenienza)

    Seguendo i passaggi che seguono, la soluzione di cui sopra può essere prodotta …

    Un ostacolo è che la chiusura di Notepad ++ perda la configuration della console, quindi questo deve essere configurato each volta che riavvia.

    Così abbiamo impostato la configuration della console come uno script che viene eseguito automaticamente each volta che Notepad ++ inizia.

    Quindi associare una scorciatoia da tastiera (hotkey) allo script diario per comodità.

    Passo 1: inserire il codice diario in un dialogo NppExec Excute …: Plugins > NppExec > Execute... , assegnandolo a un nome (utilizzerai questo nome in seguito)

    Passaggio 1 - Inserisci il codice diario

    Fase 2: inserire il codice di configuration setup_console in modo simile:

    Fase 2 - Inserire il codice di configurazione della console

    Passaggi 3, 4, 5: Nei Plugins > NppExec > Advanced Options , impostare setup_console per eseguire all'avvio (3), creare una voce di menu per il codice diario (4) e mettere la voce di menu nel menu Macro (5):

    Passi 3,4,5 - Ottenere tutto setup

    Passo 6: Imposta una hotkey di tastiera (scorciatoia) allo script diario: Settings > Shortcut Mapper... > Plugins e scorri fino a trovare il nome di script diario utilizzato …

    Fase 6 - Scorciatoia da tastiera

    Risultato: Guardando sotto il command di menu Macros , vedrai il tuo nuovo command Timestamp con la scorciatoia da tastiera.

    Risultato - fatto

    Fatto!