SublimeTextでかんたんにタイムスタンプを挿入させる

ソフト
スポンサーリンク

アプリによっては、独自にタイムスタンプを挿入できるショートカットキーを用意しているものもあります。
残念かなSublimeTextにはありません。

しかたないので、これまではGoogle日本語入力でタイムスタンプを挿入していました。
Google日本語入力で現在の時刻を入力しようとすると、「いま」で変換して、挿入します。
また、日付と時刻を挿入するには、「きょう」「いま」と2回変換せねばならず、めんどくさい。

はじめはGoogle日本語入力でのタイムスタンプ挿入にショートカットキーがないかなと思ったのですが、ないんですよね。
そこでSublimeText自体にタイムスタンプを挿入させるようプラグインを作成しました。

SublimeTextのプラグインとはいえ、そんな知識はないですので、コピペです。

参考にしたのは、Splunk-friendly timestamp plugin snippet for Sublime Text 2です。
SublimeText2とありますが、SublimeText3でも問題なく使用できます。

SublimeTextタイムスタンプ

スポンサーリンク

プラグインの作成

SublimeTextメニューの Tools > New Pluginでプラグインを作成します。

すると下記のような見本が開かれます。

import sublime, sublime_plugin

class ExampleCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.insert(edit, 0, "Hello, World!")

これは無視して、下記のコードをコピペします。

import sublime, sublime_plugin
from datetime import datetime

class TimestampCommand(sublime_plugin.TextCommand):
  def run(self, edit):
    stamp = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ ")
    for r in self.view.sel():
      if r.empty():
        self.view.insert (edit, r.a, stamp)
      else:
        self.view.replace(edit, r,   stamp)

しかし、このままではUTC 1 での現時刻を取得してしまいます。
また、挿入されるタイムスタンプも好みのものに直します。

    stamp = datetime.today().strftime("%Y-%m-%d %H:%M:%S")

6行目を修正し、ローカルタイムを取得するように変更しました。
仕上がったのが下記。

import sublime, sublime_plugin
from datetime import datetime

class TimestampCommand(sublime_plugin.TextCommand):
  def run(self, edit):
    stamp = datetime.today().strftime("%Y-%m-%d %H:%M:%S")
    for r in self.view.sel():
      if r.empty():
        self.view.insert (edit, r.a, stamp)
      else:
        self.view.replace(edit, r,   stamp)

このファイルをtimestamp.pyと名前をつけて
~/Packages/User/に保存

キーの登録

Preferences > Key Bindings - User を開いて、下記のコードを登録

{ "keys": ["super+ctrl+t"], "command": "timestamp" },

["super+ctrl+t"]部分のキーは好みのものに変えると使い勝手が向上します。

私は、
{ "keys": ["ctrl+t"], "command": "timestamp" }, とし、
Preferences > Key Bindings - Default から Default.sublime-kemap を開いて、下記をコメントアウトしています。

//  { "keys": ["ctrl+t"], "command": "transpose" },

まとめ

今回は、日時のタイムスタンプを挿入するようにしました。
同じように、日にちだけ、時刻だけのものなどを作成すれば、個別に挿入できます。

あと、ローカルタイムじゃなく、タイムゾーンの指定とか、表示形式に年月日に変更とかやりたかったけど、その辺は取り急ぎ作成したので、後日コピペ修正っすねw

SublimeTextと言えば、Packageというイメージがあったのですが、こうやってプラグインを作成することもできたんですね。


  1. 世界協定時 

タイトルとURLをコピーしました