Qual é a maneira mais fácil de obter uma tecla de atalho de carimbo de data / hora aaaa-mm-dd hh: mm: ss no Mac?

11

No Windows , uso o editor PSPad , que possui um bom carimbo de data / hora ALT-D, no qual você pode editar o formato, por exemplo, aaaa-mm-dd hh: mm: ss .

Ao trabalhar fora de um editor, por exemplo, Google Docs , tenho a Autohotkey que programou CTRL-D para inserir um carimbo de data / hora aaaa-mm-dd hh: mm: ss.

Agora estou trabalhando em um Mac usando principalmente o TextWrangler como meu editor, mas não consigo encontrar uma tecla de atalho de data e hora em seus recursos.

Qual é a maneira mais fácil de obter uma tecla de atalho aaaa-mm-dd hh: mm: ss no Mac, seja em um editor de texto (gratuito) ou em um equivalente de chave automática (gratuito)?

Edward Tanguay
fonte
Por favor, comente minha resposta se ela não funcionar para você.
Daniel Beck

Respostas:

17

Uma opção é usar um script de shell ou Python / Perl / Ruby.

Uma opção, 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)

Outro, mais curto, por @NReilingh , usando date(shell script):

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

Use /Applications/Automator.apppara criar um serviço que executa esse script. Adicione a ação Executar Shell Script Automator e insira o código acima. Não selecione nenhuma entrada em nenhum aplicativo e substitui o texto selecionado . Então salve.

Ele será colocado no menu Serviços, acessível a partir da barra de menus de qualquer aplicativo, selecionando o menu com o nome do aplicativo. Pode parecer algo assim quando você o usa:

texto alternativo

Atribua atalhos de teclado no painel de preferências Teclado em Preferências do Sistema .

texto alternativo


O TextExpander não mais gratuito possui um recurso semelhante ao que você deseja. É um aplicativo desenvolvido para inserção de trechos, por exemplo, para modelos de email parciais.


O TextMate é um editor comercial extensível que permite definir facilmente comandos personalizados, novamente nas linguagens de shell ou de script, e atribuir atalhos de teclado a eles.

Daniel Beck
fonte
Se eu digo isso, $ date "+%Y-%m-%d %T"é um pouco mais compacto ... mas não consigo fazer com que nenhum deles funcione da maneira que quero. Como se deve obter uma ação do automator para inserir texto na entrada de texto atual?
N
Ok, entendi: o "Substitui o texto selecionado" na parte superior DEVE ser verificado para que a saída do script shell bruto seja inserida. Porra, demorei meia hora para descobrir - eu estava prestes a postar uma resposta usando o pressionamento de tecla AppleScript. Além disso, certifique-se de definir "O serviço não recebe entrada em nenhum aplicativo" na parte superior, se desejar que o serviço seja universalmente acessível.
NReilingh
@NReilingh Desculpe por isso, mas eu estava com pressa quando publiquei isso, com a intenção de melhorá-lo uma vez que eu tivesse a chance (que é daqui a alguns minutos).
Daniel Beck
Eu gostaria de acrescentar que você deve selecionar usr/bin/env Pythonou algo assim (aquele que possui Python) no menu suspenso, caso contrário, qualquer aplicativo que chame o script Service não saberá reconhecer que é Python, eu acho. Pelo menos não funcionou para mim até que eu fiz isso.
Como posso desmarcar o texto depois?
21915 schmunk
4

Há um bug nas versões 10.7 e 10.8, em que os atalhos para os serviços do Automator nem sempre funcionam até que o menu de serviços seja mostrado na barra de menus. Também há um atraso notável antes da execução dos serviços. Outra opção seria atribuir um atalho para um script como este:

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

keystrokenão ignora as teclas modificadoras pressionadas; portanto, adicione um pequeno atraso ao início se você executar o script com um atalho que possui outras teclas modificadoras que não o comando. O FastScripts aguarda até que as teclas modificadoras sejam liberadas antes de executar scripts que contêm comandos de pressionamento de tecla ou código de chave.

Lri
fonte
Qual é o objetivo de Cmd-Carmazenar a área de transferência antiga e definir o novo conteúdo da área de transferência?
Daniel Beck
@DanielBeck Nothing, obrigado por apontar.
Lri
Usar a área de transferência é uma bagunça, principalmente se o usuário estiver usando o ClipMenu ou algo semelhante.
Dan Rosenstark
@Yar Alfred ignora a área de transferência "transitória" e keystrokenão sabe como inserir dois pontos no layout do meu teclado (mas é um pouco superficial ). keystrokepode ser melhor para inserir seqüências curtas apenas de ASCII como essa.
Lri
Whew acabou de verificar o espanhol, pensou que talvez meu Applescript não funcionasse. Que bom que está tudo bem, desculpe-me por alguns idiomas não terem a mesma precedência. É por isso que o script é muito mais irritante do que a programação;) Irá verificar o uso do AlfredApp para isso. Provavelmente eles merecem o $$$
Dan Rosenstark
1

A solução da Lauri é muito mais elegante que a minha, mas aqui está minha solução apenas para AppleScript. É mais rápido do que percorrer a área de transferência e usar um script de shell? Talvez.

De qualquer forma: existem muitas soluções para atribuí-lo a uma chave, mas descobri que o mais fácil é o Quicksilver Spark FastScripts . O Spark pode apenas usar o scpt diretamente, que é o que a solução AppleScript salva.

Acionador de data e hora no 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
Dan Rosenstark
fonte
0

Como uma atualização para esta pergunta, os usuários do OS X El Capitan podem achar úteis os seguintes 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

Os usuários podem criar um fluxo de trabalho Executar AppleScript, conforme descrito na resposta acima, por @ daniel-beck. O exemplo que eu criei é mostrado abaixo:

captura de tela do maçãscript no automator

Jerry W.
fonte