Sublime Text 2でVisual Studioのコマンドプロンプトを自由自在に出したい
Sublime Text 2と格闘の日々
今まで、EmEditorを使い続けていたんですが、Sublime Text 2、この癖がありまくりで、正直、疲れるんですが、不思議な魅力のあるエディタに惚れてしまったので、ここ数ヶ月格闘しています。
で、個人的には、EmEditorを使い続ける理由の一つに、バイナリ編集っていうのがあって、要は、PDFをテキストエディタで開いて、細かい部分だけ修正して再保存なんてことをやっていたのですが、便利なものの、アドレスが分からないとか、FlateDecodeをデコードしたいけど出来ないとか、プラグインを作れば良いんだけどなぁ・・・的な状況。
プラグイン
EmEditorでプラグインを作るのが面倒なところは、DLLを作る羽目になること。僕は、C++プログラマなんで、そんくらい朝飯前だろう・・・とは行きません。やっぱり、DLLを作るのは面倒くさい。
で、Sublime Text 2なら、Pythonでサクサクっとプラグインが書けますよ!って・・・僕はPython書いたことがない・・・。正直、ググりながら書くのはかなりpainful。最初に見つかったPython入門的なサイトは、肝心な部分がない。len(配列)とか、条件演算子とか。他の言語に似ているけど違うから悩む。分からない・・・。
っていうのを二時間ほど。大体分かった。
Visual Studioのコマンドプロンプト
僕の仕事上、これは不可欠なんです。IDEを起動するんじゃ無くて、エディタでさくっと書いて、その場でコンパイルして、実行してみる。
でも、スタートメニューからショートカットをたどって、さらに、cd 現在のフォルダなんてアホなことはしたくない。エディタで開いているファイルのフォルダで直接開きたい。
ということで、Pythonの勉強兼、Sublime Text 2の勉強と言うことで書いてみました。
import sublime, sublime_plugin import subprocess import os # %WinDir%\system32\cmd.exe # /K "%VS110COMNTOOLS%..\..\VC\vcvarsall.bat" amd64 # /K "%VS110COMNTOOLS%vsvars32.bat" class VisualStudioCommandLine(sublime_plugin.TextCommand): def run(self, edit, **args): try: vsver = args["vsver"] arch = args["arch"] except KeyError: sublime.message_dialog("One of vsver/arch is not specified.") return vstooldir = os.environ['VS' + vsver + 'COMNTOOLS'] windir = os.environ['WinDir'] args = [ windir + '\\system32\\cmd.exe', '/K', vstooldir + '..\\..\\VC\\vcvarsall.bat', arch ] fn = self.view.file_name() if fn: dir = os.path.dirname(fn) else: dir = os.environ['USERPROFILE'] subprocess.Popen(args, cwd=dir)
これを
%USERPROFILE%\AppData\Roaming\Sublime Text 2\Packages\User
に、適当な名前、例えば、VisualStudioCommandLine.pyで保存。さらに、
%USERPROFILE%\AppData\Roaming\Sublime Text 2\Packages\User\User.sublime-commands
というファイル(無ければ作る)に、
[ { "caption": "Visual Studio Command Prompt (VS2012 x86)", "command": "visual_studio_command_line", "args": { "vsver": "110", "arch": "x86" } }, { "caption": "Visual Studio Command Prompt (VS2012 x64)", "command": "visual_studio_command_line", "args": { "vsver": "110", "arch": "amd64" } } ]
みたいなエントリを追加。
これで、Command Palette(Ctrl+Shift+Pで開く奴)にVisual Studioとかって入力すると表示されるようになる。
vsverとarchの部分は、100 x86とかでもいける。