10

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

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

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

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

5 ответов5

16

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

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

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 или из магазина приложений 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 в автомате

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .