Apa cara termudah untuk mendapatkan hotkey cap waktu yyyy-mm-dd jj: mm: dd pada Mac?

11

Pada Windows saya menggunakan editor PSPad yang memiliki cap waktu ALT-D yang bagus yang dapat Anda edit formatnya, misalnya yyyy-mm-dd jj: mm: dd .

Saat bekerja di luar editor, misalnya Google Documents , saya memiliki Autohotkey yang telah saya programkan CTRL-D untuk memasukkan yyyy-mm-dd jj: mm: stempel waktu.

Saya sekarang bekerja pada Mac kebanyakan menggunakan TextWrangler sebagai editor saya, tetapi saya tidak dapat menemukan hotkey timestamp dalam fitur-fiturnya.

Apa cara termudah untuk mendapatkan hotkey yyyy-mm-dd jj: mm: dd pada Mac, baik dalam editor teks (gratis) atau setara (gratis) autohotkey?

Edward Tanguay
sumber
Berikan komentar atas jawaban saya jika tidak berhasil untuk Anda.
Daniel Beck

Jawaban:

17

Salah satu opsi adalah menggunakan skrip shell atau skrip Python / Perl / Ruby.

Satu opsi, menggunakan 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)

Lain, lebih pendek, oleh @NReilingh , menggunakan date(skrip shell):

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

Gunakan /Applications/Automator.appuntuk membuat Layanan yang mengeksekusi skrip ini. Tambahkan tindakan Run Shell Script Automator dan masukkan kode di atas. Pilih tidak ada input dalam aplikasi apa pun dan menggantikan teks yang dipilih . Lalu simpan.

Ini akan ditempatkan di menu Layanan yang dapat diakses dari bilah menu aplikasi dengan memilih menu dengan nama aplikasi. Mungkin terlihat seperti ini ketika Anda menggunakannya:

teks alternatif

Tetapkan pintasan keyboard di panel preferensi Keyboard di System Preferences .

teks alternatif


TextExpander yang tidak lagi gratis memiliki fitur yang mirip dengan yang Anda inginkan. Ini adalah aplikasi yang dirancang untuk penyisipan cuplikan, misalnya untuk sebagian templat email.


TextMate adalah editor komersial yang dapat diperluas, yang memungkinkan Anda untuk dengan mudah mendefinisikan perintah khusus, lagi dalam bahasa shell atau scripting, dan menetapkan pintasan keyboard untuknya.

Daniel Beck
sumber
Jika saya mengatakannya sendiri, $ date "+%Y-%m-%d %T"sedikit lebih kompak ... tapi saya tidak bisa mendapatkan keduanya untuk bekerja seperti yang saya inginkan. Bagaimana orang seharusnya mendapatkan tindakan automator untuk memasukkan teks pada input teks saat ini?
NReilingh
Oke, cari tahu: "Mengganti teks yang dipilih" di bagian atas HARUS diperiksa untuk output skrip shell mentah yang akan dimasukkan. Sialan saya butuh setengah jam untuk mencari tahu - saya akan mengirim jawaban menggunakan keystroke AppleScript sebagai gantinya. Juga, pastikan untuk mendefinisikan "Layanan tidak menerima input dalam aplikasi apa pun" di bagian atas jika Anda ingin layanan dapat diakses secara universal.
NReilingh
@NReilingh Maaf tentang itu, tapi saya sedang terburu-buru ketika saya memposting ini, dengan maksud untuk memperbaikinya begitu saya memiliki kesempatan (yang dalam beberapa menit sekarang).
Daniel Beck
Saya ingin menambahkan bahwa Anda harus memilih usr/bin/env Pythonatau sesuatu seperti itu (yang memiliki Python) dari menu drop down, jika aplikasi apa pun memanggil script Layanan tidak akan tahu untuk mengenali bahwa itu adalah Python, saya pikir. Setidaknya itu tidak bekerja untuk saya sampai saya melakukannya.
Bagaimana saya bisa membatalkan pilihan teks setelahnya?
schmunk
4

Ada bug di 10.7 dan 10.8 di mana pintasan untuk layanan Automator tidak selalu berfungsi sampai menu layanan ditampilkan dari bilah menu. Ada juga penundaan yang nyata sebelum layanan dijalankan. Opsi lain adalah menetapkan pintasan ke skrip seperti ini:

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

keystroketidak mengabaikan tombol pengubah yang ditahan, jadi tambahkan sedikit penundaan untuk memulai jika Anda menjalankan skrip dengan pintasan yang memiliki kunci pengubah selain perintah. FastScripts menunggu hingga kunci pengubah dilepaskan sebelum menjalankan skrip yang berisi perintah keystroke atau kode kunci.

Lri
sumber
Apa tujuan Cmd-Cantara menyimpan clipboard lama dan mengatur konten clipboard baru?
Daniel Beck
@DanielBeck Tidak ada, terima kasih untuk menunjukkannya.
Lri
Menggunakan clipboard itu berantakan, terutama jika pengguna menggunakan ClipMenu atau yang serupa.
Dan Rosenstark
@Yar Alfred mengabaikan clipboard "sementara", dan keystroketidak tahu bagaimana cara memasukkan titik dua dengan tata letak keyboard saya (tapi ini sedikit tepi case). keystrokemungkin lebih baik untuk memasukkan string ASCII-only pendek seperti ini.
Lri
Ketika baru saja memeriksa dengan bahasa Spanyol, saya pikir mungkin Applescript saya tidak akan berfungsi. Senang tidak apa-apa, maaf bahasa tertentu tidak diberi prioritas yang sama. Inilah sebabnya mengapa scripting jauh lebih menyebalkan daripada pemrograman;) Akan memeriksa menggunakan AlfredApp untuk itu. Mereka mungkin pantas mendapatkan $$$
Dan Rosenstark
1

Solusi Lauri jauh lebih elegan daripada solusi saya, tapi inilah solusi khusus AppleScript saya. Apakah lebih cepat daripada menjalankan melalui clipboard dan menggunakan skrip shell? Mungkin.

Pokoknya: Ada banyak solusi untuk membuatnya ditugaskan ke kunci, tetapi saya telah menemukan bahwa yang termudah adalah Quicksilver Spark FastScripts . Spark hanya dapat menggunakan scpt secara langsung, yang merupakan solusi AppleScript menyimpan.

Pemicu Tanggal dan Stempel Waktu di 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
Dan Rosenstark
sumber
0

Sebagai pembaruan untuk pertanyaan ini, pengguna OS X El Capitan mungkin menemukan AppleScript berikut bermanfaat.

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

Pengguna dapat membuat alur kerja Run AppleScript seperti yang dijelaskan dalam jawaban di atas dengan @ daniel-beck. Contoh yang saya buat ditunjukkan di bawah ini:

tangkapan layar applescript di automator

Jerry W.
sumber