Was ist der einfachste Weg, um einen JJJJ-MM-TT HH: MM: SS-Zeitstempel-Hotkey auf dem Mac zu erhalten?

11

Unter Windows verwende ich den PSPad- Editor mit einem schönen ALT-D-Zeitstempel, in dem Sie das Format bearbeiten können, z. B. JJJJ-MM-TT HH: MM: SS .

Wenn ich außerhalb eines Editors arbeite, z. B. in Google Text & Tabellen , habe ich den Autohotkey, den ich mit STRG-D programmiert habe, um einen JJJJ-MM-TT HH: MM: SS-Zeitstempel einzufügen.

Ich arbeite jetzt an einem Mac, der hauptsächlich TextWrangler als Editor verwendet, aber ich kann keinen Zeitstempel-Hotkey in seinen Funktionen finden.

Was ist der einfachste Weg, um einen JJJJ-MM-TT HH: MM: SS-Hotkey auf dem Mac zu erhalten, entweder in einem (kostenlosen) Texteditor oder einem (kostenlosen) Autohotkey-Äquivalent?

Edward Tanguay
quelle
Bitte kommentieren Sie meine Antwort, wenn es bei Ihnen nicht funktioniert.
Daniel Beck

Antworten:

17

Eine Möglichkeit besteht darin, ein Shell-Skript oder ein Python / Perl / Ruby-Skript zu verwenden.

Eine Option mit 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)

Eine andere, kürzere, von @NReilingh , mit date(Shell-Skript):

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

Verwenden Sie diese Option /Applications/Automator.app, um einen Dienst zu erstellen , der dieses Skript ausführt. Fügen Sie die Aktion " Shell Script Automator ausführen" hinzu und fügen Sie den obigen Code ein. Wählen Sie in keiner Anwendung eine Eingabe aus und ersetzen Sie den ausgewählten Text . Dann speichern.

Es wird in das Menü Dienste eingefügt, auf das über die Menüleiste einer Anwendung zugegriffen werden kann, indem das Menü mit dem Namen der Anwendung ausgewählt wird. Es könnte ungefähr so ​​aussehen, wenn Sie es verwenden:

Alt-Text

Zuweisen von Tastenkombinationen in den Keyboard - Einstellungsfenstern in den Systemeinstellungen .

Alt-Text


Der nicht mehr kostenlose TextExpander verfügt über eine ähnliche Funktion wie Sie. Es handelt sich um eine Anwendung zum Einfügen von Snippets, z. B. für teilweise E-Mail-Vorlagen.


TextMate ist ein erweiterbarer kommerzieller Editor, mit dem Sie auf einfache Weise benutzerdefinierte Befehle definieren können, wiederum in Shell- oder Skriptsprachen, und ihnen Tastaturkürzel zuweisen können.

Daniel Beck
quelle
Wenn ich es selbst sage, $ date "+%Y-%m-%d %T"ist es etwas kompakter ... aber ich kann keines davon so zum Laufen bringen, wie ich es will. Wie soll man eine Automator-Aktion veranlassen, um Text an der aktuellen Texteingabe einzufügen?
NReilingh
Okay, habe es herausgefunden: Das "Ersetzt ausgewählten Text" oben MUSS überprüft werden, ob eine Ausgabe des Raw-Shell-Skripts eingefügt werden soll. Verdammt, ich habe eine halbe Stunde gebraucht, um das herauszufinden - ich wollte gerade eine Antwort mit AppleScript-Tastenanschlag veröffentlichen. Stellen Sie außerdem sicher, dass oben "Dienst erhält in keiner Anwendung Eingaben" definiert ist, wenn der Dienst universell zugänglich sein soll.
NReilingh
@NReilingh Tut mir leid, aber ich hatte es eilig, als ich dies gepostet habe, mit der Absicht, es zu verbessern, sobald ich die Chance hatte (was jetzt in ein paar Minuten ist).
Daniel Beck
Ich möchte hinzufügen, dass Sie usr/bin/env Pythonoder so etwas (das mit Python) aus dem Dropdown-Menü auswählen müssen , sonst weiß die Anwendung, die das Service-Skript aufruft, nicht, dass es Python ist, denke ich. Zumindest hat es bei mir nicht funktioniert, bis ich das getan habe.
Wie kann ich den Text danach abwählen?
schmunk
4

Es gibt einen Fehler in 10.7 und 10.8, bei dem Verknüpfungen für Automator-Dienste nicht immer funktionieren, bis das Dienstemenü in der Menüleiste angezeigt wurde. Es gibt auch eine merkliche Verzögerung, bevor Dienste ausgeführt werden. Eine andere Möglichkeit wäre , einem Skript wie diesem eine Verknüpfung zuzuweisen :

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

keystrokeIgnoriert nicht gehaltene Modifizierertasten. Fügen Sie daher eine kleine Verzögerung zum Start hinzu, wenn Sie das Skript mit einer Verknüpfung ausführen, die andere Modifizierertasten als den Befehl enthält. FastScripts wartet, bis Modifikatorschlüssel freigegeben werden, bevor Skripts ausgeführt werden, die Tastenanschläge oder Schlüsselcodebefehle enthalten.

Lri
quelle
Was ist der Zweck Cmd-Czwischen dem Speichern der alten Zwischenablage und dem Festlegen neuer Inhalte der Zwischenablage?
Daniel Beck
@ DanielBeck Nichts, danke für den Hinweis.
Lri
Die Verwendung der Zwischenablage ist ein Chaos, insbesondere wenn der Benutzer ClipMenu oder ähnliches verwendet.
Dan Rosenstark
@Yar Alfred ignoriert "vorübergehende" Zwischenablagen und keystrokeweiß nicht, wie man Doppelpunkte mit meinem Tastaturlayout einfügt (aber es ist ein bisschen ein Randfall). keystrokeDies ist jedoch möglicherweise besser geeignet, um kurze Nur-ASCII-Zeichenfolgen wie diese einzufügen.
Lri
Puh hat gerade mit Spanisch gesprochen und dachte, mein Applescript würde vielleicht nicht funktionieren. Ich bin froh, dass es in Ordnung ist. Tut mir leid, dass bestimmte Sprachen nicht den gleichen Vorrang haben. Aus diesem Grund ist das Erstellen von Skripten so viel ärgerlicher als das Programmieren;) Wird dafür die Verwendung von AlfredApp prüfen. Sie verdienen wahrscheinlich das $$$
Dan Rosenstark
1

Sie können ein Freeware-Add-On namens WordService installieren, das diese Funktionalität als Dienst hinzufügt. Für diese können Sie in den Systemeinstellungen -> Tastatur -> Verknüpfungen eine Tastenkombination zuweisen.

Hier ist ein Artikel darüber von Mac OSX Tips - http://www.macosxtips.co.uk/index_files/automatically-insert-date-and-time.php

Laden Sie von http://www.devontechnologies.com/download/products.html oder vom App Store http://appstore.com/mac/wordservice herunter

Motin
quelle
1

Lauris Lösung ist viel eleganter als meine, aber hier ist meine reine AppleScript-Lösung. Ist es schneller als durch die Zwischenablage zu laufen und ein Shell-Skript zu verwenden? Könnte sein.

Wie auch immer: Es gibt viele Lösungen, um einen Schlüssel zuzuweisen, aber ich habe festgestellt, dass Quicksilver Spark FastScripts am einfachsten sind . Spark kann den scpt einfach direkt verwenden, was die AppleScript-Lösung speichert.

Datums- und Zeitstempel-Trigger 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
Dan Rosenstark
quelle
0

Als Update für diese Frage können Benutzer von OS X El Capitan das folgende AppleScript nützlich finden.

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

Benutzer können einen Run AppleScript- Workflow erstellen, wie in der obigen Antwort von @ daniel-beck beschrieben. Das Beispiel, das ich erstellt habe, ist unten dargestellt:

Screenshot von Applescript im Automator

Jerry W.
quelle