Cách dễ nhất để có được một phím nóng dấu thời gian yyyy-mm-dd hh: mm: ss trên máy Mac là gì?


11

Trên Windows, tôi sử dụng trình soạn thảo PSPad có dấu thời gian ALT-D đẹp mà bạn có thể chỉnh sửa định dạng, ví dụ: yyyy-mm-dd hh: mm: ss .

Khi làm việc bên ngoài trình chỉnh sửa, ví dụ Google Docs , tôi có Autohotkey mà tôi đã lập trình CTRL-D để chèn dấu thời gian yyyy-mm-dd hh: mm: ss.

Tôi hiện đang làm việc trên máy Mac chủ yếu sử dụng TextWrangler làm trình chỉnh sửa của mình nhưng tôi không thể tìm thấy phím nóng dấu thời gian trong các tính năng của nó.

Cách dễ nhất để có được một phím nóng yyyy-mm-dd hh: mm: ss trên máy Mac, trong trình soạn thảo văn bản (miễn phí) hoặc tương đương autohotkey (miễn phí) là gì?


Hãy bình luận về câu trả lời của tôi nếu nó không hiệu quả với bạn.
Daniel Beck

Câu trả lời:


17

Một tùy chọn là sử dụng tập lệnh shell hoặc tập lệnh Python / Perl / Ruby.

Một tùy chọn, sử dụng 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)

Một cái khác, ngắn hơn, bởi @NR roomh , sử dụng date(shell script):

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

Sử dụng /Applications/Automator.appđể tạo một Dịch vụ thực thi tập lệnh này. Thêm hành động Run Shell Script Automator và chèn mã ở trên. Chọn không có đầu vào trong bất kỳ ứng dụngthay thế văn bản đã chọn . Sau đó tiết kiệm.

Nó sẽ được đặt trong menu Dịch vụ có thể truy cập từ thanh menu của bất kỳ ứng dụng nào bằng cách chọn menu có tên của ứng dụng. Nó có thể trông giống như thế này khi bạn sử dụng nó:

văn bản thay thế

Gán các phím tắt trong ngăn tùy chọn Bàn phím trong Tùy chọn hệ thống .

văn bản thay thế


TextExpander không còn miễn phí có tính năng tương tự như những gì bạn muốn. Đây là một ứng dụng được thiết kế để chèn đoạn mã, ví dụ: đối với các mẫu email một phần.


TextMate là một trình soạn thảo thương mại có thể mở rộng, cho phép bạn dễ dàng xác định các lệnh tùy chỉnh, một lần nữa bằng ngôn ngữ shell hoặc script và gán phím tắt cho chúng.


Nếu tôi tự nói như vậy, $ date "+%Y-%m-%d %T"thì gọn hơn một chút ... nhưng tôi không thể làm cho một trong hai thứ này hoạt động theo cách tôi muốn. Làm thế nào để có một hành động tự động hóa để chèn văn bản vào đầu vào văn bản hiện tại?
NRzingh

Được rồi, tìm ra nó: "Thay thế văn bản đã chọn" ở trên cùng PHẢI được kiểm tra để đầu ra tập lệnh shell thô được chèn. Điều chết tiệt đã khiến tôi mất nửa giờ để tìm ra - thay vào đó tôi sẽ đăng câu trả lời bằng cách sử dụng tổ hợp phím AppleScript. Ngoài ra, hãy đảm bảo xác định "Dịch vụ không nhận đầu vào trong bất kỳ ứng dụng nào" ở trên cùng nếu bạn muốn dịch vụ có thể truy cập toàn cầu.
NRzingh

@NRzingh Xin lỗi về điều đó, nhưng tôi đã vội vàng khi tôi đăng bài này, với ý định cải thiện nó một khi tôi có cơ hội (đó là trong vài phút bây giờ).
Daniel Beck

Tôi muốn thêm rằng bạn phải chọn usr/bin/env Pythonhoặc một cái gì đó tương tự (cái có Python) từ menu thả xuống, nếu không, bất kỳ ứng dụng nào gọi tập lệnh Service sẽ không biết để nhận ra Python đó, tôi nghĩ vậy. Ít nhất nó đã không làm việc cho tôi cho đến khi tôi làm điều đó.

Làm thế nào tôi có thể bỏ chọn văn bản sau đó?
schmunk 17/03/2015

4

Có lỗi trong 10.7 và 10.8 khi các phím tắt cho dịch vụ Automator không hoạt động cho đến khi menu dịch vụ được hiển thị từ thanh menu. Cũng có một sự chậm trễ đáng chú ý trước khi các dịch vụ được chạy. Một tùy chọn khác là gán một phím tắt cho một tập lệnh như thế này:

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

keystrokekhông bỏ qua các phím bổ trợ được giữ, vì vậy hãy thêm một độ trễ nhỏ vào đầu nếu bạn chạy tập lệnh bằng phím tắt có các phím bổ trợ khác ngoài lệnh. FastScripts đợi cho đến khi các phím bổ trợ được phát hành trước khi chạy các tập lệnh chứa tổ hợp phím hoặc lệnh mã khóa.


Mục đích của Cmd-Cviệc lưu trữ clipboard cũ và thiết lập nội dung clipboard mới là gì?
Daniel Beck

@DanielBeck Không có gì, cảm ơn vì đã chỉ ra.
Lri

Sử dụng bảng tạm là một mớ hỗn độn, đặc biệt nếu người dùng đang sử dụng ClipMothy hoặc một cái gì đó tương tự.
Dan Rosenstark

@Yar Alfred bỏ qua các bảng tạm "tạm thời" và keystrokekhông biết cách chèn dấu hai chấm với bố cục bàn phím của tôi (nhưng đó là một chút trường hợp cạnh). keystrokecó thể tốt hơn để chèn các chuỗi chỉ ASCII ngắn như thế này.
Lri

Khi tôi vừa kiểm tra bằng tiếng Tây Ban Nha, tôi nghĩ có lẽ Applescript của tôi sẽ không hoạt động. Rất vui vì được, xin lỗi vì một số ngôn ngữ nhất định không được ưu tiên như nhau. Đây là lý do tại sao kịch bản khó chịu hơn nhiều so với lập trình;) Sẽ kiểm tra sử dụng AlfredApp cho điều đó. Họ có thể xứng đáng với $$$
Dan Rosenstark

1

Bạn có thể cài đặt một tiện ích bổ sung miễn phí có tên WordService bổ sung chức năng này dưới dạng dịch vụ, theo đó bạn có thể gán phím tắt trong Tùy chọn hệ thống -> Bàn phím -> Phím tắt.

Đây là một bài viết về nó từ Mac OSX Tips - http://www.macosxtips.co.uk/index_files/automatically-insert-date-and-time.php

Tải xuống từ http://www.devontechnologists.com/doad/products.html hoặc từ App Store http://appstore.com/mac/wordservice


1

Giải pháp của Lauri thanh lịch hơn tôi, nhưng đây là giải pháp chỉ dành cho AppleScript của tôi. Có nhanh hơn chạy qua clipboard và sử dụng tập lệnh shell? Có lẽ.

Dù sao: Có rất nhiều giải pháp để gán nó cho một khóa, nhưng tôi đã thấy rằng cách dễ nhất là Quicksilver Spark FastScripts . Spark chỉ có thể sử dụng scpt trực tiếp, đó là những gì giải pháp AppleScript lưu lại.

Ngày và Dấu thời gian Kích hoạt trong 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

Là một bản cập nhật cho câu hỏi này, người dùng OS X El Capitan có thể thấy AppleScript sau đây hữu ích.

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

Người dùng có thể tạo quy trình chạy AppleScript như được mô tả trong câu trả lời trên của @ daniel-beck. Ví dụ tôi tạo được hiển thị bên dưới:

ảnh chụp màn hình của applescript trong automator

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.