Який найпростіший спосіб отримати гарячу клавішу клавіатури yyyy-mm-dd hh: mm: ss на Mac?


12

У Windows я використовую редактор PSPad, який має гарну часову позначку ALT-D, в якій можна редагувати формат, наприклад, yyyy-mm-dd hh: mm: ss .

Під час роботи поза редактором, наприклад, Google Docs , у мене є автоматична клавіша, яку я запрограмував CTRL-D для вставки часової позначки yyyy-mm-dd hh: mm: ss.

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

Який найпростіший спосіб отримати гарячу клавішу yyyy-mm-dd hh: mm: ss на Mac, або в (вільному) текстовому редакторі, або в (безкоштовному) еквіваленті автоматичної клавіші?


Будь ласка, прокоментуйте мою відповідь, якщо вона не працює для вас.
Даніель Бек

Відповіді:


18

Один із варіантів - використовувати скрипт оболонки або сценарій 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 і вставте код вище. Виберіть жодний вклад у жодній програмі та замініть вибраний текст . Потім збережіть.

Він буде розміщений у меню Сервіси, яке доступне з панелі меню будь-якої програми, вибравши меню з назвою програми. Це може виглядати приблизно так, коли ви його використовуєте:

alt текст

Призначте комбінації клавіш на панелі налаштувань клавіатури в системних налаштуваннях .

alt текст


Більше безкоштовний TextExpander має функцію, схожу на потрібну. Це програма, призначена для вставки фрагментів, наприклад, для часткових шаблонів електронної пошти.


TextMate - це розширюваний комерційний редактор, який дозволяє легко визначати власні команди, знову ж таки в мовах оболонок або сценаріїв, і призначати їм комбінації клавіш.


Якщо я це так кажу, $ date "+%Y-%m-%d %T"трохи компактніше ... але я не можу змусити жодного з них працювати так, як я хочу. Як слід отримати автоматизатор для вставки тексту на поточному введенні тексту?
NReilingh

Гаразд, зрозумів це: "Заміняє вибраний текст" вгорі ОБОВ'ЯЗКОВО перевіряти, чи потрібно вставити вихідний сценарій оболонки. Проклята річ зайняла у мене півгодини, щоб розібратися - я вже збирався розмістити відповідь, використовуючи замість натискання клавіш AppleScript. Крім того, переконайтесь, що вгорі визначте "Сервіс не отримує жодної інформації в будь-якій програмі", якщо ви хочете, щоб послуга була загальнодоступною.
NReilingh

@NReilingh Вибачте з цього приводу, але я поспішав, коли публікував це, з наміром покращити його, як тільки у мене з'явився шанс (що вже за кілька хвилин)
Даніель Бек

Я хотів би додати, що ви повинні вибрати usr/bin/env Pythonабо щось подібне (те, на якому є Python) зі спадного меню, інакше, будь-яка програма, яка викликає сценарій служби, не знатиме, щоб визнати її Python, я думаю. Принаймні, це не спрацювало для мене, поки я цього не зробив.

Як я можу зняти текст після цього?
шмонк

4

Помилка в 10.7 та 10.8, де ярлики для служб Автоматизатора не завжди працюють, доки в рядку меню не буде показано меню служб. Перед запуском послуг також помітна затримка. Іншим варіантом було б призначити ярлик такому сценарію :

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


Яка мета Cmd-Cміж зберіганням старого буфера обміну та встановленням нового вмісту буфера обміну?
Даніель Бек

@DanielBeck Нічого, дякую, що вказав на це.
Лрі

Використання буфера обміну - це безлад, особливо якщо користувач використовує ClipMenu або щось подібне.
Дан Розенстарк

@Yar Альфред ігнорує "минущі" буфери, і keystrokeне знає, як вставити колонки за допомогою моєї клавіатури (але це трохи крайній випадок). keystrokeможе бути краще для вставки коротких рядків, лише для ASCII, як це.
Лрі

Коли тільки перевірив іспанську мову, подумав, що, можливо, мій Applescript не буде працювати. Рада, що це нормально, вибачте, що певним мовам не надається однаковий пріоритет. Ось чому сценарій набагато більше дратує, ніж програмування;) Буде вдаватися використовувати AlfredApp для цього. Вони, напевно, заслуговують на $$$
Dan Rosenstark

1

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

Ось стаття про це з підказок Mac OSX - http://www.macosxtips.co.uk/index_files/automatically-insert-date-and-time.php

Завантажте з http://www.devontechnologies.com/download/products.html або з App Store http://appstore.com/mac/wordservice


1

Рішення Лаурі набагато елегантніше мого, але ось моє AppleScript-рішення. Це швидше, ніж пробіг через буфер обміну і використання сценарію оболонки? Можливо.

У будь-якому випадку: Є маса рішень, щоб надати його ключу, але я виявив, що найпростішим є Quicksilver Spark FastScripts . Іскра може просто використовувати 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

Користувачі можуть створити робочий процес запуску AppleScript, як описано у вищевказаній відповіді від @ daniel-beck Приклад, який я створив, показаний нижче:

скріншот яблучного сценарію в автоматизаторі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.