Qual è il modo più semplice per ottenere un tasto di scelta rapida timestamp yyyy-mm-gg hh: mm: ss sul Mac?


11

Su Windows uso l' editor PSPad che ha un bel timestamp ALT-D di cui puoi modificare il formato, ad esempio aaaa-mm-gg hh: mm: ss .

Quando lavoro fuori da un editor, ad esempio Google Documenti , ho Autohotkey che ho programmato CTRL-D per inserire un timestamp aaaa-mm-gg hh: mm: ss.

Ora sto lavorando su un Mac principalmente usando TextWrangler come editor, ma non riesco a trovare un tasto di scelta rapida data / ora nelle sue funzionalità.

Qual è il modo più semplice per ottenere un tasto di scelta rapida aaaa-mm-gg hh: mm: ss su Mac, in un editor di testo (gratuito) o in un equivalente di autohotkey (gratuito)?


Commenta la mia risposta se non funziona per te.
Daniel Beck

Risposte:


17

Un'opzione è usare uno script di shell o uno script Python / Perl / Ruby.

Un'opzione, usando Python :

#!/usr/bin/env python
import time
t = time.localtime()
# yyyy-mm-dd hh:mm:ss
print '%d-%02d-%02d %02d:%02d:%02d' % (t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec)

Un altro, più breve, di @NReilingh , usando date(shell script):

date "+%Y-%m-%d %T"

Utilizzare /Applications/Automator.appper creare un servizio che esegue questo script. Aggiungi l'azione Run Shell Script Automator e inserisci il codice sopra. Seleziona nessun input in nessuna applicazione e sostituisce il testo selezionato . Quindi salva.

Verrà inserito nel menu Servizi accessibile dalla barra dei menu di qualsiasi applicazione selezionando il menu con il nome dell'applicazione. Potrebbe assomigliare a questo quando lo usi:

testo alternativo

Assegna le scorciatoie da tastiera nel riquadro Preferenze tastiera in Preferenze di Sistema .

testo alternativo


TextExpander non è più gratuito ha una funzione simile a quella che desideri. È un'applicazione progettata per l'inserimento di frammenti, ad esempio per modelli di e-mail parziali.


TextMate è un editor commerciale estensibile che ti consente di definire facilmente comandi personalizzati, sempre in linguaggi di shell o di script, e assegnare loro le scorciatoie da tastiera.


Se lo dico io stesso, $ date "+%Y-%m-%d %T"è un po 'più compatto ... ma non riesco a farli funzionare nel modo che preferisco. Come si può ottenere un'azione di automazione per inserire testo nell'attuale input di testo?
NReilingh,

Va bene, capito: il "Sostituisce il testo selezionato" in alto DEVE essere verificato per inserire l'output dello script shell grezza. Dannazione, mi ci è voluta mezz'ora per capire: stavo per pubblicare una risposta usando la sequenza di tasti AppleScript. Inoltre, assicurarsi di definire "Il servizio non riceve input in nessuna applicazione" in alto se si desidera che il servizio sia universalmente accessibile.
NReilingh,

@NReilingh Mi dispiace, ma ho avuto fretta mentre l'ho pubblicato, con l'intento di migliorarlo una volta che ne ho avuto la possibilità (che è tra pochi minuti).
Daniel Beck

Vorrei aggiungere che devi selezionare usr/bin/env Pythono qualcosa del genere (quello che ha Python) dal menu a discesa, altrimenti qualunque applicazione chiama lo script di servizio non saprà riconoscere che è Python, credo. Almeno non ha funzionato per me fino a quando non l'ho fatto.

Come posso deselezionare il testo in seguito?
schmunk,

4

C'è un bug in 10.7 e 10.8 in cui le scorciatoie per i servizi di Automator non funzionano sempre fino a quando il menu dei servizi non viene mostrato dalla barra dei menu. C'è anche un notevole ritardo prima dell'esecuzione dei servizi. Un'altra opzione sarebbe quella di assegnare un collegamento a uno script come questo:

set old to the clipboard as record
set the clipboard to (do shell script "date '+%Y-%m-%d %H:%M:%S'")
tell application "System Events" to keystroke "v" using command down
delay 0.05
set the clipboard to old

keystrokenon ignora i tasti di modifica premuti, quindi aggiungi un piccolo ritardo all'avvio se esegui lo script con un collegamento che ha altri tasti di modifica oltre al comando. FastScripts attende fino al rilascio delle chiavi modificatore prima di eseguire gli script che contengono comandi di battitura o di codice chiave.


Qual è lo scopo Cmd-Ctra la memorizzazione dei vecchi appunti e l'impostazione dei nuovi contenuti degli appunti?
Daniel Beck

@DanielBeck Niente, grazie per averlo segnalato.
Lri,

L'uso degli Appunti è un casino, in particolare se l'utente utilizza ClipMenu o qualcosa di simile.
Dan Rosenstark,

@Yar Alfred ignora gli appunti "transitori" e keystrokenon sa come inserire i due punti con il mio layout di tastiera (ma è un po 'un caso limite). keystrokepotrebbe essere migliore per l'inserimento di stringhe brevi solo ASCII come questa però.
Lri,

Whew, ho appena controllato con lo spagnolo, ho pensato che forse il mio Applescript non avrebbe funzionato. Sono contento che sia ok, mi dispiace che alcune lingue non abbiano la stessa precedenza. Questo è il motivo per cui lo scripting è molto più fastidioso della programmazione;) Verificherà l'utilizzo di AlfredApp per questo. Probabilmente meritano il $$$
Dan Rosenstark il

1

È possibile installare un componente aggiuntivo Freeware chiamato WordService che aggiunge questa funzionalità come servizio, per il quale è possibile assegnare una scorciatoia da tastiera in Preferenze di Sistema -> Tastiera -> Scorciatoie.

Ecco un articolo a riguardo tratto da Mac OSX Tips - http://www.macosxtips.co.uk/index_files/automatically-insert-date-and-time.php

Scarica da http://www.devontechnologies.com/download/products.html o dall'App Store http://appstore.com/mac/wordservice


1

La soluzione di Lauri è molto più elegante della mia, ma ecco la mia soluzione solo per AppleScript. È più veloce che scorrere negli appunti e usare uno script di shell? Può essere.

Comunque: ci sono molte soluzioni per assegnarlo a una chiave, ma ho scoperto che il più semplice è Quicksilver Spark FastScripts . Spark può semplicemente usare direttamente lo scpt, che è ciò che salva la soluzione AppleScript.

Trigger data e ora in OSX

-- yar2050 (Dan Rosenstark)'s favorite date format 
-- 2017-08-03 update
on fillInZero(int)
    if (int < 10) then set int to "0" & int
    return int as string
end fillInZero

set theDate to (current date)
set theHour to fillInZero(hours of (theDate) as integer)
set theMinutes to fillInZero(minutes of (theDate) as integer)
tell theDate to get (its month as integer)
set theMonth to fillInZero(result)
set theDay to fillInZero(day of theDate)
tell (theDate) to get (its year as integer) & "-" & (theMonth) & "-" & theDay & " " & (theHour) & ":" & theMinutes
set date_ to (result as string)
tell application "System Events"
    set frontmostApplication to name of the first process whose frontmost is true
end tell


tell application frontmostApplication
    delay 0.2 -- I have no idea why this is necessary
    activate
    tell application "System Events"
        if (frontmostApplication = "Evernote") then
            keystroke "h" using {command down, shift down}
            keystroke "b" using {command down}
            keystroke date_
            keystroke "b" using {command down}
        else
            keystroke date_
        end if
    end tell
end tell

0

Come aggiornamento a questa domanda, gli utenti di OS X El Capitan potrebbero trovare utile il seguente AppleScript.

set the clipboard to (do shell script "date +%Y-%m-%d\" \"%H:%M:%S")
tell application "System Events"
    keystroke "v" using command down
end tell

Gli utenti possono creare un flusso di lavoro Esegui AppleScript come descritto nella risposta sopra di @ daniel-beck. L'esempio che ho creato è mostrato di seguito:

screenshot di applecript nell'automatore

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.