什么是在Mac上获得yyyy-mm-dd hh:mm:ss timestamp热键的最简单方法?


11

Windows上我使用PSPad编辑器,它有一个很好的ALT-D时间戳,您可以编辑格式,例如yyyy-mm-dd hh:mm:ss

在编辑器外工作时,例如Google Docs,我有Autohotkey,我编写了CTRL-D来插入一个yyyy-mm-dd hh:mm:ss时间戳。

我现在在Mac上工作,主要使用TextWrangler作为我的编辑器,但我找不到其功能中的时间戳热键。

在Mac上获得yyyy-mm-dd hh:mm:ss热键的最简单方法是什么,可以是(免费)文本编辑器还是(免费)autohotkey等效?


如果它不适合你,请评论我的答案。
Daniel Beck

Answers:


17

一种选择是使用shell脚本或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(shell脚本):

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

使用/Applications/Automator.app创建服务执行这个脚本。添加Run Shell脚本 Automator操作并插入上面的代码。在任何应用程序中选择无输入替换所选文本。然后保存。

它将被放置在“ 服务”菜单中,可以通过选择具有应用程序名称的菜单从任何应用程序的菜单栏访问该菜单。使用它时可能看起来像这样:

替代文字

在指定的键盘快捷键的键盘中预置面板系统偏好设置

替代文字


不再免费的TextExpander具有与您想要的功能类似的功能。它是专为代码段插入而设计的应用程序,例如用于部分电子邮件模板。


TextMate是一个可扩展的商业编辑器,允许您再次以shell或脚本语言轻松定义自定义命令,并为它们分配键盘快捷键。


如果我自己这么说,那就$ date "+%Y-%m-%d %T"更紧凑......但是我不能按照我想要的方式工作。如何在当前文本输入中使用自动机操作来插入文本?
NReilingh 2010年

好吧,想通了:必须检查顶部的“替换所选文本”是否要插入原始shell脚本输出。该死的东西花了我半个小时来弄清楚 - 我准备用AppleScript键击来发布答案。此外,如果您希望服务可以普遍访问,请确保在顶部定义“服务在任何应用程序中都没有输入”。
NReilingh 2010年

@NReilingh对此表示抱歉,但是我发布这篇文章的时候我很着急,我希望一旦有机会(现在只需几分钟)就可以改进它。
Daniel Beck

我想补充一点,你必须usr/bin/env Python从下拉菜单中选择或类似的东西(有Python的那个),否则无论应用程序调用什么服务脚本都不会知道它的Python,我想。至少它在我这样做之前对我不起作用。

我怎样才能取消之后的文字?
schmunk 2015年

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会一直等到修改键被释放。


Cmd-C存储旧剪贴板和设置新剪贴板内容之间的目的是什么?
Daniel Beck

@DanielBeck没什么,谢谢你指出来。
Lri

使用剪贴板是一团糟,特别是如果用户使用ClipMenu或类似的东西。
丹·罗森斯塔克

@Yar Alfred忽略了“瞬态”剪贴板,并且keystroke不知道如何使用键盘布局插入冒号(但这有点像边缘情况)。keystroke可能更适合插入像这样的短ASCII字符串。
12:00

刚刚用西班牙语检查过,想到也许我的Applescript不行。很高兴没关系,抱歉某些语言的优先级不同。这就是为什么脚本比编程更烦人的原因;)将检查使用AlfredApp。他们可能应该得到$$$
Dan Rosenstark


1

Lauri的解决方案比我的更优雅,但这是我的AppleScript解决方案。它比通过剪贴板运行和使用shell脚本更快吗?也许。

无论如何:有很多解决方案可以将它分配给一个密钥,但我发现最简单的是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

用户可以按照@ daniel-beck的上述答案中的描述创建Run AppleScript工作流程。我创建的示例如下所示:

自动贩卖机中的AppleScript截图

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.