この間から、CodeEval をチョコチョコとやっていて、いつのまにやら日本国内でのランクが5になっていたよ。ま、人数が少ないようだけど。
で、たまに Ruby を使うけどたいていは Python でコードを書いている。そのコードなんだけど、プログラムの要求条件がファイルから入力して1行ずつ処理する、というのがほとんどだ。ということは毎回同じコードを書くことになるわけだけど、ここで Sublime Text のスニペットを使うと便利なので、今日はその作り方のメモ。
メニューから [ツール] → [スニペット追加] を選ぶと、次のような雛形が表示される。これを編集して、保存すればいいわけだ。
<![CDATA[ Hello, ${1:this} is a ${2:snippet}. ]]> <!-- Optional: Set a tabTrigger to define how to trigger the snippet --> <!-- <tabTrigger>hello</tabTrigger> --> <!-- Optional: Set a scope to limit where the snippet will trigger --> <!-- <scope>source.python</scope> -->
で、どこをどう編集すればいいのかというと、まずは CDATA の中身(Hello,~となっているところ)。ここが実際に貼り付けられるコード片になる。${1:this} とか ${2:snippet} となっているところは一種の変数のようなもので、貼り付けたあと続けて書き換えられるようにカーソルが移動する。もちろんなくてもいい。${0} と書いておくと貼り付けた後そこにカーソルが移動する。
<tabTrigger> の中はスニペットを呼び出すショートカットのようなもので、これを入力してタブキーを押すとスニペットが貼り付けられる。
<scope> はどんな状況で有効になるか、らしい。source.python とあるのは Python のソースコードを書いているときに有効になる。
結局、こういうのを書いた。
<![CDATA[ import sys test_cases = open(sys.argv[1], 'r')<br /]]> for test in test_cases: ${0} test_cases.close() ]]> <!-- Optional: Set a tabTrigger to define how to trigger the snippet --> codeeval-python2 <!-- Optional: Set a scope to limit where the snippet will trigger --> source.python
これを、C:\Users\takatoh\AppData\Roaming\Sublime Text 3\Packages\User フォルダの下に、codeeval-python2.sublime-snippet という名前で保存する。Sublime Text は .sublime-snippet という(長い)拡張子のファイルをスニペットと認識するようだ。フォルダは上記のフォルダ直下でなくてもいいみたいなので、Sunippets というフォルダを作ってその中に保存した。
さあ、準備は完了したので使ってみよう。Sublime Text を立ち上げて新規ファイルを開く。何も書く前に test.py とでも名前をつけて保存する。これで Python を編集するモードになって、上のスニペットが使えるようになったはずだ。codeeval-python2
とタイプしてタブキーを押すとスニペットが貼り付けられるはず・・・だけど c をタイプした時点で候補に出てきた。これは便利。