Atom に日付時刻を入力するショートカットキーを追加

ATOMで作業ログを残したいとき、日付時刻を入れるショートカットが見つからなかったので追加。

環境はMacOS10.14.4 でJISキーボード。 ATOMのファイルを2点変更して、以下のような感じにした。

cmdと; を押すとYYYY/MM/DD(曜日)を出力 例. 2019/04/27(土)
cmdとctrlと; を押すとhh:mm:ssを出力 例. 17:20:00
cmdと: を押すと上記のどちらも出力 2019/04/27(土) 17:20:39

まるまる参考にしたのはこちら。Dateパッケージを使う方法もあるけど、曜日も入ってほしい。

Atomに現在日時を挿入するコマンドを追加する

  1. Atomのinit.coffeeファイルに以下を追加

~/.atom/init.coffee

################################################################
# 現在日時を挿入するコマンドを追加
# 参考: https://github.com/dannyfritz/atom-date
# 参考: https://github.com/JerrySievert/date-utils

daysKanji = ['日', '月', '火', '水', '木', '金', '土']
pad = (str, length) ->
  str = String(str)
  str = '0' + str  while(str.length < length)
  str
dateOrTime = (kind) ->
  now = new Date()
  yyyy = now.getYear() + 1900
  mm = pad(now.getMonth() + 1, 2)
  dd = pad(now.getDate(), 2)
  ddd = daysKanji[now.getDay()]
  hh24 = pad(now.getHours(), 2)
  mi = pad(now.getMinutes(), 2)
  ss = pad(now.getSeconds(), 2)
  if kind == 1
    "#{yyyy}/#{mm}/#{dd}(#{ddd})"
  else if kind == 2
    "#{hh24}:#{mi}:#{ss}"
  else
    "#{yyyy}/#{mm}/#{dd}(#{ddd}) #{hh24}:#{mi}:#{ss}"

insertText = (str) ->
  return unless editor = atom.workspace.getActiveTextEditor()
  selection = editor.getLastSelection()
  selection.insertText(str)

atom.commands.add 'atom-text-editor', 'torout-date:date', ->
  insertText(dateOrTime(1))
atom.commands.add 'atom-text-editor', 'torout-date:time', ->
  insertText(dateOrTime(2))
atom.commands.add 'atom-text-editor', 'torout-date:datetime', ->
  insertText(dateOrTime(0))

################################################################
  1. ATOMのキーマップファイルに以下を追加

~/.atom/keymap.cson

'atom-text-editor':
  'cmd-;': 'torout-date:date'
  'cmd-ctrl-;': 'torout-date:time'
  'cmd-:': 'torout-date:datetime'

これでATOMを一旦終了して再起動したら動いた。いい感じ。 後でキーバインドを調べると他にcmd-: を使うものもあったみたいだけど、問題なさそうなのでこれで動かしてます。