Jaki jest najprostszy sposób na uzyskanie skrótu czasowego rrrr-mm-dd gg: mm: ss na komputerze Mac?

12

W systemie Windows korzystam z edytora PSPad z ładnym znacznikiem czasu ALT-D, który możesz edytować w formacie np. Rrrr-mm-dd gg: mm: ss .

Podczas pracy poza edytorem, np. Dokumentami Google , mam Autohotkey, który zaprogramowałem CTRL-D, aby wstawiał znacznik czasu rrrr-mm-dd gg: mm: ss.

Pracuję teraz na komputerze Mac, używając głównie TextWrangler jako edytora, ale nie mogę znaleźć skrótu czasu w jego funkcjach.

Jaki jest najłatwiejszy sposób na uzyskanie skrótu rrrr-mm-dd gg: mm: ss na Macu, w (darmowym) edytorze tekstu lub (bezpłatnym) ekwiwalencie automatycznego klucza?

Edward Tanguay
źródło
Proszę skomentować moją odpowiedź, jeśli to nie zadziała.
Daniel Beck

Odpowiedzi:

18

Jedną z opcji jest użycie skryptu powłoki lub skryptu Python / Perl / Ruby.

Jedna opcja przy użyciu Pythona :

#!/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)

Kolejny, krótszy, autorstwa @NReilingh , przy użyciu date(skrypt powłoki):

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

Służy /Applications/Automator.appdo tworzenia usługi wykonującej ten skrypt. Dodaj działanie Uruchom Shell Script Automator i wstaw powyższy kod. Wybierz brak wprowadzania w dowolnej aplikacji i zastępuje zaznaczony tekst . Następnie zapisz.

Zostanie on umieszczony w menu Usługi, które jest dostępne z paska menu dowolnej aplikacji poprzez wybranie menu z nazwą aplikacji. Może wyglądać mniej więcej tak:

alternatywny tekst

Przypisz skróty klawiaturowe w panelu preferencji Klawiatura w Preferencjach systemowych .

alternatywny tekst


Już nie darmowy TextExpander ma funkcję podobną do tego, czego chcesz. Jest to aplikacja przeznaczona do wstawiania fragmentów, np. Do częściowych szablonów wiadomości e-mail.


TextMate to rozszerzalny, komercyjny edytor, który pozwala łatwo definiować niestandardowe polecenia, ponownie w językach powłoki lub skryptów, i przypisywać im skróty klawiaturowe.

Daniel Beck
źródło
Jeśli sam to powiem, $ date "+%Y-%m-%d %T"jest trochę bardziej kompaktowy ... ale nie mogę zmusić żadnego z nich do pracy tak, jak chcę. W jaki sposób należy uzyskać działanie automatora w celu wstawienia tekstu przy bieżącym wprowadzaniu tekstu?
NReilingh
Okej, wymyśliłem: „Zamień zaznaczony tekst” u góry MUSI być zaznaczone pod kątem wstawienia surowego skryptu powłoki. Cholerna sprawa zajęła mi pół godziny, żeby się zorientować - miałem zamiar opublikować odpowiedź za pomocą klawisza AppleScript. Pamiętaj też, aby zdefiniować „Usługa nie otrzymuje danych wejściowych w żadnej aplikacji” u góry, jeśli chcesz, aby usługa była powszechnie dostępna.
NReilingh
@NReilingh Przepraszam za to, ale spieszyłem się, gdy to opublikowałem, z zamiarem ulepszenia go, gdy miałem okazję (co jest teraz za kilka minut).
Daniel Beck
Chciałbym dodać, że musisz wybrać usr/bin/env Pythonlub coś takiego (ten, który ma Python) z menu rozwijanego, w przeciwnym razie jakakolwiek aplikacja wywoła skrypt Service nie będzie wiedział, że rozpoznaje, że jest to Python. Przynajmniej nie działało to dla mnie, dopóki tego nie zrobiłem.
Jak mogę później odznaczyć tekst?
schmunk
4

W wersjach 10.7 i 10.8 występuje błąd, w którym skróty do usług Automatora nie zawsze działają, dopóki menu usług nie zostanie wyświetlone z paska menu. Istnieje również zauważalne opóźnienie przed uruchomieniem usług. Inną opcją byłoby przypisanie skrótu do skryptu w następujący sposób:

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

keystrokenie ignoruje wciśniętych klawiszy modyfikujących, więc dodaj małe opóźnienie do uruchomienia, jeśli uruchomisz skrypt ze skrótem, który ma inne klawisze modyfikujące niż polecenie. Skrypty FastScript czekają na zwolnienie klawiszy modyfikatora przed uruchomieniem skryptów zawierających polecenia klawiszy lub kodu klawisza.

Lri
źródło
Jaki jest cel Cmd-Cprzechowywania starego schowka i ustawiania nowej zawartości schowka?
Daniel Beck
@DanielBeck Nic, dziękuję za zwrócenie na to uwagi.
Lri
Korzystanie ze schowka to bałagan, szczególnie jeśli użytkownik używa ClipMenu lub czegoś podobnego.
Dan Rosenstark,
@Yar Alfred ignoruje „przejściowe” schowki i keystrokenie wie, jak wstawić dwukropki za pomocą mojego układu klawiatury (ale jest to trochę przypadek na krawędzi). keystrokemoże być jednak lepsze do wstawiania krótkich ciągów tylko ASCII takich jak ten.
Lri,
Właśnie sprawdziłem hiszpański, pomyślałem, że może mój Applecript nie zadziała. Cieszę się, że jest ok, przepraszam, że niektóre języki nie mają tego samego pierwszeństwa. Dlatego skrypty są o wiele bardziej irytujące niż programowanie;) Sprawdzi się przy użyciu AlfredApp. Prawdopodobnie zasługują na $$$
Dan Rosenstark,
1

Rozwiązanie Lauri jest o wiele bardziej eleganckie niż moje, ale oto moje rozwiązanie tylko dla AppleScript. Czy jest szybszy niż przeglądanie schowka i używanie skryptu powłoki? Może.

W każdym razie: Istnieje wiele rozwiązań umożliwiających przypisanie go do klucza, ale okazało się, że najłatwiejszy jest Quicksilver Spark FastScripts . Spark może po prostu użyć scpt bezpośrednio, co oszczędza rozwiązanie AppleScript.

Data i znacznik czasu wyzwalacza w 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
źródło
0

W ramach aktualizacji tego pytania użytkownicy systemu OS X El Capitan mogą uznać następujący kod AppleScript za przydatny.

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

Użytkownicy mogą utworzyć przepływ pracy Uruchom AppleScript, jak opisano w powyższej odpowiedzi autorstwa @ daniel-beck. Przykład, który utworzyłem, pokazano poniżej:

zrzut ekranu AppleScript w automatorze

Jerry W.
źródło