Какой самый простой способ получить горячую клавишу метки времени гггг-мм-дд чч: мм: сс на Mac?

В Windows я использую редактор PSPad, у которого есть хорошая отметка времени ALT-D, в которой вы можете редактировать формат, например, гггг-мм-дд чч: мм: сс.

При работе вне редактора, например Google Docs, у меня есть Autohotkey, который я запрограммировал CTRL-D для вставки метки времени гггг-мм-дд чч: мм: сс.

Сейчас я работаю на Mac, в основном используя TextWrangler в качестве редактора, но я не могу найти горячую клавишу метки времени в его функциях.

Какой самый простой способ получить горячую клавишу гггг-мм-дд чч: мм: сс на Mac, либо в (бесплатном) текстовом редакторе, либо в (бесплатном) эквиваленте автоматической клавиши?

5 ответов

Решение

Одним из вариантов является использование сценария оболочки или сценария Python/Perl/Ruby.

Один вариант, используя 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)

Еще один, короче, @NReilingh, используя date (сценарий оболочки):

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

использование /Applications/Automator.app создать службу, которая выполняет этот скрипт. Добавьте действие Run Shell Script Automator и вставьте приведенный выше код. Выберите нет ввода в любом приложении и заменяет выделенный текст. Тогда сохраните.

Он будет помещен в меню " Сервисы", которое доступно из любой строки меню приложения, выбрав меню с названием приложения. Когда вы используете это, это может выглядеть примерно так:

альтернативный текст

Назначьте сочетания клавиш на панели настроек " Клавиатура" в Системных настройках.

альтернативный текст


Уже не бесплатный TextExpander имеет функцию, аналогичную той, что вы хотите. Это приложение, предназначенное для вставки фрагментов, например, для частичных шаблонов электронной почты.


TextMate - это расширяемый коммерческий редактор, который позволяет легко определять пользовательские команды, опять же на языках оболочки или сценариев, и назначать им сочетания клавиш.

В 10.7 и 10.8 есть ошибка, из-за которой ярлыки для сервисов Automator не всегда работают, пока меню сервисов не отобразится в строке меню. Также есть заметная задержка перед запуском сервисов. Другой вариант - назначить ярлык сценарию следующим образом:

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

keystroke не игнорирует удерживаемые клавиши-модификаторы, поэтому добавьте небольшую задержку для запуска, если вы запускаете скрипт с ярлыком, который имеет другие клавиши-модификаторы, чем команда. FastScripts ожидает освобождения ключей-модификаторов, прежде чем запускать сценарии, содержащие команды нажатия клавиш или кода ключа.

Вы можете установить бесплатное дополнение WordService, которое добавляет эту функцию в качестве службы, для которой вы можете назначить сочетание клавиш в Системные настройки -> Клавиатура -> Ярлыки.

Вот статья об этом из Mac OSX Tips - http://www.macosxtips.co.uk/index_files/automatically-insert-date-and-time.php

Загрузите с http://www.devontechnologies.com/download/products.html или из магазина приложений http://appstore.com/mac/wordservice

Решение Лаури намного элегантнее моего, но вот мое решение только для AppleScript. Это быстрее, чем работать через буфер обмена и использовать сценарий оболочки? Может быть.

В любом случае: существует множество решений, позволяющих присвоить его клавише, но я обнаружил, что самым простым является Quicksilver Spark FastScripts. Spark может просто использовать scpt напрямую, это то, что сохраняет решение AppleScript.

Триггер даты и метки времени в 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

В качестве обновления к этому вопросу пользователи OS X El Capitan могут найти следующий 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

Пользователи могут создавать рабочий процесс Run AppleScript, как описано в ответе выше @daniel-beck. Пример, который я создал, показан ниже:

Другие вопросы по тегам