そろそろ自分の環境を変えるため、備忘録を兼ねてSublimeText3を2年以上使って生き残ったPluginを紹介しようと思います。
ちなみに環境は、Mac OSX & SublimeText3です。
しばらくSublimeText2と並行でしたが、いよいよSublimeText3へ対応するPluginが増えてきて、安定性もほぼ互角になりつつあるように感じています。
ですので最近、公私共々SublimeText3へ完全移行&設定共有しました。
オススメPluginたち
他にもコード補完系、Linter系、テーマ系も入れていますが、また余力のあるときに紹介します。
Abacus
特定の記号で列揃えをしてくれます。
https://sublime.wbond.net/packages/Abacus
例えばこんなコードを
$options['user_id'] = '1234';
$options['name'] = 'Ichiro Yamada';
$options['gender'] = 'male';
$options['age'] = '21';
こんな感じにしてくれます。
$options['user_id'] = '1234';
$options['name'] = 'Ichiro Yamada';
$options['gender'] = 'male';
$options['age'] = '21';
どの記号で揃えるかは設定で増やせます。
このように列揃えすることで、他プログラマーへ処理のまとまりの単位を見せたり、タイプミスに気がつきます。
僕は、デフォルトそのままで使っていてイコールぐらいでしか使わないです。
ショートカットを覚えるほど利用頻度がないので、command + shift + p
で、abacusと打って呼びます。
BracketHighlighter
[], (), {}, "", '', <tag></tag>
といったカッコ類を強調してくれます。
Pluginの説明ページに画像があるので、どんな機能なのかわかりやすいです。
https://sublime.wbond.net/packages/BracketHighlighter
僕は設定で[], (), {}
をキツ目の強調にしました。
SublimeTextはたまに気を利かせてカッコ類を削除してくれるときがあり、これがバグの原因になったからです。
あと、BracketHighlighterは地味にSwap Quotes
やSwap Brackets
という便利コマンドをもっており、シングルクォートからダブルクォートへ変更でき、これも手に馴染むと病みつきです。
Case Conversion
キャメルケース、スネークケースの相互変換ができます
意外とやりません? 僕は結構使います。
https://sublime.wbond.net/packages/Case%20Conversion
変換したいワードを選択して、command + shift + p
でcamelと打って探し、変換しています。
DocBlockr
JSDocの形式で関数、クラスの説明を書くことができます。
ドキュメント化するかしないかに関わらず、JSDoc形式で関数の説明を書いておくのは、プログラマーのマナーだと思います。
https://sublime.wbond.net/packages/DocBlockr
以下のようなJSDocを、/**
とつけてtabキーを押すだけで生成してくれます。
/**
* [testfunc description]
* @param User $user [description]
* @param Array $option [description]
* @return [type] [description]
*/
public function testfunc(User $user, Array $option){
...
}
実はこのコメントブロック内にenterキーのショートカットがあるせいで日本語が上手く打てません。
enterのショートカットキーを無効にするテクニックで回避できますが、僕自身は適当にコピペで書いています。
そこまでしてDocBlockrを使う理由は
- ドキュメントを書くのが億劫なので必然とタイプセーフを書くようになる。
- ドキュメントを書くことで、改めて関数の役割を見直すことができる。(書く内容を迷うときは、大抵ひとつの関数に複数の機能をもたせている場合が多い。)
[積極的にオススメ] GitGutter
現在のコードとgitのHEADとの追加や変更の差分を、コード行数の左へ記号で表示してくれます。
これは必ず導入して欲しいPluginのひとつです。これのおかげでどれだけ作業効率があがったかというシロモノです。
https://sublime.wbond.net/packages/GitGutter
Pluginの説明ページに画像がありますので、機能は理解しやすいと思います。
[積極的にオススメ] Increment Selection
複数カーソルで数字を選択すると、それをインクリメントしてくれます。
https://sublime.wbond.net/packages/Increment%20Selection
使わない日が無いぐらいのPluginです。必ず導入して欲しいPluginのひとつ。
PHPのデバッグの手間は、SunippetとこのPluginで解消しました。
まずこんなSnippetを用意します。(これはcakephpのケースです)
<snippet>
<content><![CDATA[
\$this->log("${1:write your comment} 1", LOG_DEBUG);
]]></content>
<tabTrigger>debc</tabTrigger>
</snippet>
その後、デバッグしたいコード内で
- 関数内の
$
を複数カーソルで選択していき、カーソルを先頭行に持っていきます。 - そこで改行を入れ、空行へ
debc
でこのsnippetを挿入します。 - さらにsnippetの
1
の部分を選択し、command + shift + p
でincrement selectionする
これで手間が大幅に激減します。
[積極的にオススメ] Origami
通常の1,2,4画面分割以上に、自由に(例えばEmacsライクに)画面分割出来るようになります。
https://sublime.wbond.net/packages/Origami
毎日使うぐらい必須のPluginですが、わかりやすい機能ですので詳細は割愛します。
Pretty JSON
Jsonのminify、Formatをやってくれます。
https://sublime.wbond.net/packages/Pretty%20JSON
PHPだと、デバッグ時に使うjson_encode()
と相性が良すぎです。
ショートカットは覚えず、command + shift + p
でjsonと打って呼び出しています。
SyncedSideBar
現在開いているファイルとサイドバーのファイルの位置が連動します
https://sublime.wbond.net/packages/SyncedSideBar
慣れると快適です。逆に無いと違和感がでてきます。とりあえず入れておきたい。
TodoReview
コードに備忘録コメントでTODOなど書いた行を抽出してくれます。
https://sublime.wbond.net/packages/TodoReview
コードの作業忘れ、一時的な変更の戻し忘れ・・・、はTODOコメントを一緒に添えておき、このPluginで防ぎましょう。
TODOと書かれた行を一覧化してくれ、そのリストから当該ファイルの該当行へジャンプすることができます。
ちなみにTODOでコメントを書くと、フレームワークのTODOコメントと混ざります。
なので僕は設定でTODOME: に反応するように設定し、「TODOME: リリース前にぜったいなおす」と表示するsnippetを作りました。
TODOMEは Sublime Text > Preferemces > Package Settings > TodoReview > Settings - User
にて設定できます。
以下は僕の設定です、TODOME関連は以下のpatternsの部分を参照下さい。
{
"patterns": {
"TODO": "TODO[\\s]*?:+(?P<todo>.*)$",
"TODOME": "TODOME[\\s]*?:+(?P<todome>.*)$"
},
"exclude_folders": [
"*.git*"
],
"exclude_files": [
"*.sublime-workspace",
"*.sublime-project",
],
"case_sensitive": false,
"render_include_folder": false,
"render_spaces": 1,
"navigation_forward_skip" : 10,
"navigation_backward_skip" : 10
}
Trimmer
文字通り、空白をトリムしてくれます
https://sublime.wbond.net/packages/Trimmer
標準の機能だと保存時にトリムというのがあります。それも使用していますが、保存前にトリムしたいニーズもあったりします。
このプラグインでトリムしています。
最近重宝しているライブラリ
random-sublime-text-plugin
複数カーソルを利用してランダムテキストを作成できます
https://github.com/kimpettersen/random-sublime-text-plugin
テストのFixtureを作るときとか、ダミーデータを作るときに役立ちます。
手動でやるFactoryGirlみたいなイメージです。
SublimeDataConverter
CSV形式からYaml,Json,Ruby配列,PHP配列etc へ変換できます
https://github.com/fitnr/SublimeDataConverter
Excelなどで作ったデータを速攻fixtureや配列の形に変換できます。
このプラグインを知ってから複数カーソルを使った変換作業が辛くなりましたw
Before
NAME,VALUE,FRUIT,DATE
Alice,10,Apple,"Sep. 12, 2012"
Bob,11,Blueberry,"Sep. 13, 2012"
Chris,12,Orange,"Sep. 14, 2012"
After(ワンコマンドでここまでイケます。もっと形式あります)
---
-
NAME: Alice
VALUE: 10
FRUIT: Apple
DATE: Sep. 12, 2012
-
NAME: Bob
VALUE: 11
FRUIT: Blueberry
DATE: Sep. 13, 2012
-
NAME: Chris
VALUE: 12
FRUIT: Orange
DATE: Sep. 14, 2012
CREATE TABLE DataConverter(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(255),
VALUE INT,
FRUIT VARCHAR(255),
DATE VARCHAR(255)
) CHARACTER SET utf8;
INSERT INTO DataConverter
(NAME,VALUE,FRUIT,DATE)
VALUES
("Alice",10,"Apple","Sep. 12, 2012"),
("Bob",11,"Blueberry","Sep. 13, 2012"),
("Chris",12,"Orange","Sep. 14, 2012");
[{"FRUIT": "Apple", "NAME": "Alice", "VALUE": "10", "DATE": "Sep. 12, 2012"}, {"FRUIT": "Blueberry", "NAME": "Bob", "VALUE": "11", "DATE": "Sep. 13, 2012"}, {"FRUIT": "Orange", "NAME": "Chris", "VALUE": "12", "DATE": "Sep. 14, 2012"}]
その他Tips(一部Mac限定)
Pluginの探しかた
定期的にSublimeTextのPlugin情報サイト の Trending, New, Popular をチェックするのが一番いいプラグインが見つかる可能性が高いです。
複数台PCでのPluginの共有方法
メニューバーのSublime Text > Preference > Browse Packages...
を選択するとFinderが出てきます。
そこのUser
フォルダの中身を丸ごとgit管理してbitbucketのプライベートレポジトリとしています。
これを複数の環境でcloneして共有しています。
Sublimeで開く(Finder)
Finder上なのでファイルをダブルクリックしてSublimeで開くには、右クリック > 情報を見る
で情報ウィンドウを開く。
そこでこのアプリケーションで開く
で Sublime Text.app を選択。すべてを変更
を押すことで、同一拡張子のダブルクリック時に利用するアプリケーションがSublime Textになる。
Sublimeで開く(Command)
subl
コマンドを導入しましょう。subl .
でカレントフォルダを開いてくれます。
(有名すぎる話なので、あとで時間のあるときに追記します。)
インデントをスペースに固定する方法
Sublimeの設定で、"translate_tabs_to_spaces": true
を設定しているのに、保存時にインデントがスペースからタブへ変換されてしまっていた。
"detect_indentation": false
もあわせて指定することで解決します。
開発環境がリモートサーバーの場合
※僕が書いた他の記事の宣伝です。一応プラグイン話に絡みがあるかな。。と思いつつ。
SFTPプラグインを一時期使っていましたが、ブランチの変更などに対応していないので(Sublime上の保存が同期のトリガーになっているせい)、最近はfswatch + rsync でやっています。
fswatch&rsync&Automatorで、Macとサーバーのファイルをリアルタイム同期する。 - Qiita