# Emacsの人が大人気なかったのでSublime Text 2で画像表示するプラグイン作った。 _published: 2012/11/16_ ![alt](http://b.hatena.ne.jp/entry/image/http://d.hatena.ne.jp/shunsuk/20121116/1353039620) 福岡の「しかじろう ([id:re_shikajiro](http://d.hatena.ne.jp/re_shikajiro/))」が東京の「しまじろう」にインスパイアされて開催したSublime Text 2勉強会に参加してきた。 - [福岡 Sublime Text 2 勉強会-第0回- : ATND](http://atnd.org/events/33785) - [SublimeText2勉強会@福岡 - しかじろうが make するよ!](http://shikajiro.github.com/blog/2012/11/14/st2study/) SublimeText 2は一度起動しただけの初心者だったけど、すごく興味があったので参加してきた。一度起動してVimのキーバインドにしてコロンを打った瞬間にそっと終了しただけだったけど、すごく興味があったので参加してきた。 SublimeText 2はいろんなプラグインがあって便利そう。しまじろうさんのプラグインまとめにステキそうなのがたくさん載ってる。そして、下の方までスクロールしていくと、コメント欄が「しまじろう」と「しかじろう」が交互に並んでて、SublimeText 2は便利そうだなあと思った。 - [「第0回 Sublime Text 2 勉強会」で紹介されたプラグインまとめ - The Powerful Code](http://powerful-code.com/blog/2012/11/plugins-for-st2/) まず、メインスピーカーの[id:funatti](http://d.hatena.ne.jp/funatti/)さんが勉強会の予定を忘れてて登場しなかった。 つぎに、[id:kiwanami](http://d.hatena.ne.jp/kiwanami/)さんが「Emacs使いがST2を使った感想」と称して、Emacsの布教活動をはじめた。 最後に、僕がエディタ関係なくサーバーの話をした。 - [[月315円から使えるインフラサービス Gehirn Web Services がステキで恋に落ちるレベル。]] 家に帰りながらすごく反省した。[id:re_shikajiro](http://d.hatena.ne.jp/re_shikajiro/)に悪いことをしたなあと。そこで、大人げないEmacsに勝つためのプラグインを作ることにした。 ![[20121115204547.jpg|400]] Emacsに画像を表示してドヤ顔の[id:kiwanami](http://d.hatena.ne.jp/kiwanami/)さん。なぜこのシーンだけ写真撮ったんだとツッコまれたけれど、会場に到着して[id:kiwanami](http://d.hatena.ne.jp/kiwanami/)さんが座っているのを見つけた時点で、このシーンが訪れることは想定済みだった。 - [Emacsでスムーズに図形編集ができるようになるcacoo.elを作ってみた - 技術日記@kiwanami](http://d.hatena.ne.jp/kiwanami/20100507/1273205079) - [DB操作ツール Emacs DBI を作ってみた - 技術日記@kiwanami](http://d.hatena.ne.jp/kiwanami/20120305/1330939440) これは、Sublime Textに画像を表示するプラグインを作るしかない。 ライブラリを使った。リンク貼った時点でネタバレしてると思うけど、そこは我慢して欲しい。 - [jp2a -- JPEG to ASCII converter](http://csl.sublevel3.org/jp2a/) Macだと `brew install jp2a` でインストールできる。 とりあえず、みんな大好き「くまモン」の画像を表示してみよう。コントラストのはっきりしたくまモンを選んだ理由は想像がつくと思うけど、そこは我慢して欲しい。 - [プレゼントダウンロード | くまモンオフィシャルサイト](http://kumamon-official.jp/present) ![[20121116125328.jpg|400]] SublimeText 2のプラグインはPythonで書くらしい、Pythonよくわからない。ごめんなさい。エラー処理してない。 ```python mport sublime, sublime_plugin from subprocess import Popen, PIPE class SublimeImage(sublime_plugin.TextCommand): def run(self, edit): edit = self.view.begin_edit('sublime_image') sels = self.view.sel() for sel in sels: url = self.view.substr(sel) cmd = "/usr/local/bin/convert %(url)s jpg:-" % locals() p1 = Popen([cmd], stdout=PIPE, shell=True) p2 = Popen(["export TERM=xterm && /usr/local/bin/jp2a - -i --term-height"], stdin=p1.stdout, stdout=PIPE, stderr=PIPE, shell=True) p1.stdout.close() out, err = p2.communicate() self.view.insert(edit, sel.b, out) self.view.end_edit(edit) ``` これに、ショートカットキーを割り当ててやる。コンソールから `view.run_command('sublime_image')` でも実行できる。デフォのショートカットとかぶってたら、ごめんなさい。 ```json [ { "keys": ["super+shift+i"], "command": "sublime_image" } ] ``` 完全に何が起こるかわかってると思うけど、そこは我慢して欲しい。大人なんだから。 ![[20121116125329.png|400]] 画像のURLを選択して~ `command` + `shift` + `i` を押すと~ ![[20121116125330.png|400]] きたよ!くまモン(?)きたよ![id:re_shikajiro](http://d.hatena.ne.jp/re_shikajiro/)見てる? Sublime Text 2は、横にサムネイル(?)が表示されるので、そこを見るといいと思う。 くまモン(?)だー。わーい。 ![[20121116125331.png|400]] ちなみに、このプラグインはVimで書いた。