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

11

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

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

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

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

Эдвард Тангей
источник
Пожалуйста, прокомментируйте мой ответ, если он не работает для вас.
Даниэль Бек

Ответы:

17

Одним из вариантов является использование сценария оболочки или сценария 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 - это расширяемый коммерческий редактор, который позволяет легко определять пользовательские команды, опять же на языках оболочки или сценариев, и назначать им сочетания клавиш.

Даниэль Бек
источник
Если я и сам так скажу, то я $ date "+%Y-%m-%d %T"немного более компактен ... но я не могу заставить ни один из них работать так, как я хочу. Как получить действие automator для вставки текста при текущем вводе текста?
NReilingh
Ладно, разобрался: «Замененный выделенный текст» вверху ДОЛЖЕН быть проверен на наличие необработанного вывода сценария оболочки для вставки. Черт, мне потребовалось полчаса, чтобы понять - я собирался опубликовать ответ, используя вместо этого нажатие клавиши AppleScript. Кроме того, убедитесь, что вы определили «Сервис не получает входных данных ни в одном приложении» вверху, если вы хотите, чтобы сервис был общедоступным.
NReilingh
@NReilingh К сожалению об этом, но я спешил, когда опубликовал это, с намерением улучшить его, как только у меня появится такая возможность (сейчас это через несколько минут).
Даниэль Бек
Я хотел бы добавить, что вы должны выбрать usr/bin/env Pythonили что-то подобное (то, которое имеет Python) из выпадающего меню, в противном случае любое приложение, вызывающее скрипт Service, не узнает, что это Python, я думаю. По крайней мере, это не сработало для меня, пока я не сделал это.
Как я могу отменить выбор текста после этого?
Schmunk
4

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

LRI
источник
Какова цель Cmd-Cхранения старого буфера обмена и установки нового содержимого буфера обмена?
Даниэль Бек
@DanielBeck Ничего, спасибо, что указал на это.
Lri
Использование буфера обмена - беспорядок, особенно если пользователь использует ClipMenu или что-то подобное.
Дэн Розенстарк
@ Яр Альфред игнорирует «временные» буферы обмена и keystrokeне знает, как вставлять двоеточия с помощью моей раскладки клавиатуры (но это немного необычный случай). keystrokeможет быть лучше для вставки коротких строк только для ASCII, как это, хотя.
Lri
Вот только что проверил с испанским, подумал, может быть, мой Applescript не сработает. Рад, что все в порядке, извините, что некоторые языки не имеют такой же приоритет. Вот почему создание сценариев намного более раздражает, чем программирование;) Для этого проверю использование AlfredApp. Они, вероятно, заслуживают $$$
Дэн Розенстарк
1

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

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

Загрузите с http://www.devontechnologies.com/download/products.html или из App Store http://appstore.com/mac/wordservice.

Мотин
источник
1

Решение Лаури намного элегантнее моего, но вот мое решение только для 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
Дэн Розенстарк
источник
0

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

скриншот appleScript в автомате

Джерри В.
источник