読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

ブログが書きやすくなるように、Sublime Text3のプラグインを作って、選択した範囲をタグで囲めるようにしてみた。

<スポンサーリンク>

ブログを書いていて、文字の色を青くしたかったり、赤くしたかったり、太字にしたかったりすることがあると思います。

そういうときに、はてなブログの記事の編集画面でGUIで青色をつけたり、太くしたりするのは面倒ではないでしょうか?

僕の場合、ブログを書くときはSublime Textなどのエディターで編集してからコピペするので、なおさら面倒になります。

なので、コマンド一つで青文字にするタグで囲んだり、文字を太くするためのSublime Textプラグインを作ってみました。

ネットにはSublime Text2とSublime Text3の情報が錯綜していたのですが、僕が作ったのはSublime Text3のプラグインです。


こんな風に文字を選択して・・・・
f:id:sho322:20150608110500j:plain

「Ctrl + E」を押すと、タグで囲まれます。
f:id:sho322:20150608110509j:plain

どのキーにバインドするかは、自分で設定することができます。

それでは、作り方です。

Tools > New Plugin

で新しいプラグインを作成します。

囲んだ雛形の範囲を

<font color="blue">囲んだ範囲</font>

で囲むSublime Text Pluginを作ってみます。

import sublime, sublime_plugin

class blueCommand(sublime_plugin.TextCommand):
	def run(self, edit):
		selection = self.view.sel()[0]

		selected_string = self.view.substr(selection)

		replaced_string = '<font color="blue">' + selected_string + '</font>'
		self.view.replace(edit, selection, replaced_string )

C:\Users\user_name\AppData\Roaming\Sublime Text 3\Packages\User
以下に保存します。名前は任意です。

User直下に保存するのは望ましくない、というような記述を見つけたので、もう一つフォルダを掘ってもいいかもしれません。

自分はとりあえずですが、User直下にblue.pyという名前で保存しました。

その後、

Ctrl + '`'か、View > Show Console
でコンソールを開き、以下のコマンドを打ちます。

view.run_command('blue')

クラス名がblueCommandなので、「Command」を取り除いた「blue」を引数に指定します。

ちなみに、Sublime Text2まで使われていた、

view.runCommand('blue')

のようにやると、以下のようなエラーが出ます。

AttributeError: 'View' object has no attribute 'runCommand'

run_commandとしなければいけません。

<参考>
http://www.pxt.jp/ja/diary/article/282/

これをKey Bindというショートカットキーと結びつける機能を使って、CTRL + Bを2回押したら囲まれるように設定します。

Preference > Key Bindings User

に以下のように設定します。

[
	{
		"keys": ["ctrl+e"],
		"command": "blue"
	}
]

ググってみると、

{
	"keys": [ctrl+e],
	"command": "blue"
}

みたいに書いてあるのがありますが、Sublime Text3では["ctrl+e"]のように、ダブルクオートで囲まないとエラーになります。

<参考>
http://stackoverflow.com/questions/15046504/trying-to-set-sublime-keymap-getting-a-error-trying-to-parse-file-message


公式のAPIリファレンスはこちらです。
https://www.sublimetext.com/docs/3/api_reference.html#sublime.Selection

こちらを参考に、思いついたものを色々と作っていくことができそうです。
自分でカスタマイズするようになると、エディタがとても便利になりますね!

僕は、太字にするタグ、赤字にするタグ青字にするタグを生成するプラグインをそれぞれ作って、key bindingしておきました。

こんな感じで、楽に色付けすることができます!