Какой самый простой способ получить горячую клавишу метки времени гггг-мм-дд чч: мм: сс на 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. Пример, который я создал, показан ниже: