acokikoy's notes

{"勉強中":"Python","注目":"Shopify","LOVE♡":["ABARTH595","TA-GG9","Ukulele","Movable Type","ガーナ ミルクチョコレート"]} なWebディレクター

現在日時や生まれてから今日までの日数を挿入する Sublime Text 用のちびプラグイン

Sublime Text で、現在日時を簡単に挿入したい。 既存のプラグインもあるけど、自分好みにしたかったので書いてみた。

  • 現在日時
  • 生まれてから今日までの日数

を挿入するコードを書いて、ショートカット登録するところまでの手順を残す。

現在日時を表示するSublime Text プラグインを書く

Sublime TextのPlugInは Python で書く。

ツール > 開発 > プラグイン追加 をクリックすると、 次のようなサンプルコードが入った新規ファイルが開く。
※メニューは Japanise プラグインで日本語化しています。

import sublime
import sublime_plugin


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

自分のやりたい処理に書き換える。 処理単位でclassを追加して、rumメソッド内に処理を書く。

  • import sublime, sublime_plugin:おまじない
  • class名:
    • 「ほにゃららCommand」という名にする。
    • ほにゃらら部分は、アッパースネークケース(パスカルケース)で書く。  後述の通り、ショートカット登録する時にこの名前が使われる
  • runメソッド:
    • 処理を書く

リファレンスはここ
API Reference – Sublime Text 3 Documentation

生まれてから今日までの日数と今日の日付を「D12345 on 2019-03-16 (Sat) 」の書式で挿入する処理
from datetime import datetime, timedelta, date
import sublime
import sublime_plugin


class AddTheDayCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        """ 生まれてから今日までの日数を返す Dxxxxxx on YYYY-MM-DD (weekday) """
        BIRTHDAY = date(19**, 3, 18)    # 自分の誕生日
        the_days = (date.today() - BIRTHDAY + timedelta(days=1)).days
        d = date.today().strftime("%Y-%m-%d (%a) ") 
        self.view.run_command("insert_snippet", { "contents": "%s" %  "D" + str(the_days) + " on " + d } )
今日の日時を挿入する処理
class AddDateTimeCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet", { "contents": "%s" %  datetime.now().strftime("%Y-%m-%d (%a) %H:%M:%S") } )

ファイルを保存する。
MacOSなら

~/Library/Application\ Support/Sublime\ Text\ 3/Packages/User

配下に、add_date.py のように適当なファイル名をつけて保存する。

GitHubにもあげといた。
GitHub - acokikoy/sublimetext_snipetts: snipetts, small plugins of Sublime Text 3

ショートカット登録して簡単に挿入できるようにする

キーの組み合わせは、Excelで日時を挿入するショートカットに近いものにした。

基本設定 > キーバインド でショートカットの設定ファイルが開くので、 「Default (OSX).sublime-keymap」の方に、次を追記する。

// add datetime, 
{"keys": ["ctrl+;"], "command": "add_date_time" },
{"keys": ["ctrl+shift+;"], "command": "add_the_day" },

"command"の値は、class名が「AddTheDayCommand」なら「add_the_day」のように、アッパーキャメルケースをスネークケースに読み替えて 末尾のCommandは省くルールになる模様。

設定ファイルを保存すると、以降

  • 「Ctrl + ;」で現在日時、
  • 「Ctrl + Shift + ;」で Dxxxx (生まれてからの日数)

が挿入されるようになる。

参考にさせてもらった記事、リファレンスなど

以上