Sublime Text 3の導入 (2)
前記事の続き. 今回は, scalaの設定等を行う. 今回からは, 情報を短くまとめるために, 各パッケージについて(コマンド名, やれること)の2つを羅列していく. 最終的にはGithubかなんかに全部まとめていきたい.
コマンド名は, キーバインドに書く類のものと, Command Paletteにある類のものも混在しているので注意. そのへんは命名規則で察することを期待しています.
デフォルトコマンド
機能 | コマンド |
---|---|
やり直し | undo |
タブの切り替え/移動 | next_view_in_stack |
ファイルを閉じる | close_file |
コマンドパレット | show_overlay(overlay="command_palette") |
コマンドパレットは, (ちょっと違うけど)使い道としてはemacsのM-x
に近いと感じたので, また, デフォルトバインドのCtrl-Shift-P
は押しづらいので, Alt-x
に変えるのがおすすめ.
scala
SublimeSBT
コマンド名 | やれること |
---|---|
show_sbt | sbt画面を開く/sbt画面にフォーカスを移す |
SBT: Start SBT | sbtを開始 |
SBT: Start Continuous Compiling | sbt ~compile |
他にも色々あるけど, Command Paletteを開いてsbt
と打てばあとはわかると思う.
これを使って関心したのは, Command Paletteには現在実行できるものしか表示されないこと. 例えば, SBT: Stop SBTは, sbtが立ち上がっている状態じゃないと候補に表示されない. また, sbtプロジェクトじゃなければこれらsbtのコマンドは表示されない. emacsのM-x
と比べても候補が少なくなり見やすいし, 他のIDEみたいに全部メニューなのと比べたら段違いに作業が早い.
でも, zshの補間みたいに, 開発する段になったら逆に面倒くさくなりそうな予感もする. どうなんだろう.
Ensime
コマンド名 | やれること |
---|---|
Ensime: Startup | ensimeの開始 |
Ensime: Go To Definition | 定義へ飛ぶ |
Ensime: Inspect Type at Point | カーソルのあるexpressionの型をステータスバーに表示する. |
emacsでscalaを書く際によく用いられるensimeのsublime textバインディング. まずはEnsimeの方の使い方を学ばないと色々とお話にならないかなって感じだけど, とりあえずは補間(auto-complete
)と, ジャンプくらいは使えたのでまぁいいや.
Startup直後異常に重い気がするけど, すぐに軽くなるのでSublime Text起動直後にstartupさせてしまえばいい. それでもどうせ他のIDEよりは起動は早い.
インストールは参考サイトの通りだけど, ensime-server
のインストール時のコマンドは, Ubuntu14.04の場合は
$ cd ~/.config/sublime-text-3/Packages/
$ mkdir -p Ensime/server
$ cd Ensime/server
$ mv (ダウンロード場所)/ensime_2.10.0-0.9.8.9/* .
となる. できればDropboxからでなくgithubやsbtから落としたい(バージョン管理のため)がやり方がわからないので妥協している.
ScalaFormat
コマンド名 | やれること |
---|---|
ScalaFormat: Format Current File | 現在のファイルをフォーマットする. |
scalaのcode formatter. scalariformを中では使っているらしい. 保存時の自動フォーマットもあるけど, 若干処理が重いのでやめたほうがいいように思えた. どちらかというと, sbtかCLツールと組み合わせてgitのpre-commit-hookとしてscalariformを使うほうが適切なように思う.
ただ, scalaの標準スタイルを, Sublime Textの設定でやろうとすると問題が解決できず(以下のようなケース), ちょっと困っている.
val x = 1 + 2 + 3
+ 4 + 5 + 6
Sublime Textだと
val x = 1 + 2 + 3
+ 4 + 5 + 6
になってしまう. これが解決できれば大体のインデントはSublime Textで揃えられるから, 後は細かいところをgitのpre-commit hookとかで修正させればいいのではないか.
markdown(Monokai Extended, Markdown Extended)
markdownをsublime上で書くためのプラグイン2つ. 基本的なsyntax highlightだけど. Markdown Extendedのコード内syntax highlightは結構強力だと感じた.
プログラミング一般
EditorConfig
どうせならコーディングスタイルはEditorConfigで他のエディタと同期とったほうが綺麗だよねってことで導入.
EditorConfig自体あまり使えてないので不明点多数だけど, 最低限は動いた. ~/.editorconfig
にデフォルトの設定を書くみたいな(.gitconfig
的な)ことはできないのかな?
ScalaFormatと役割がかぶるのがちょっと気になる. これはmarkdownとか用になるのだろうか.
Smart Delete
コードの一部を削除するときに, インデントも同時に削除するよみたいな. 入れとくと自然な動きをするのでとりあえず入れておけばいいと思う.
BracketHighlighter
コマンド名 | やれること |
---|---|
BacketHighlighter: Fold Bracket Content | カーソル位置の内容を折りたたみする |
パッケージ名はHighlighterだけど, ハイライト以外にも色々(選択, 折りたたみ, 括弧で選択テキストを囲うなど)やってくれるパッケージ. 便利.
git
SublimeGit
Installして, Command Palette開いて, gitって打ち込んだら後は大体CUIの時と同じ感じに使える. addとcommitは, git status
をして, そこからaddするファイルを指定(s)し, コミット(c)するのが一番確実かな.
GitGutter
いれておけば横にaddされたか否かなどを表示してくれる.
その他
SideBarEnhancements
なんか参考サイトで必須とか言われたから入れてみた. まぁ確かにmove filesとかすらなかったから必須は必須かな.
SublimeFiles
コマンド名 | やれること |
---|---|
File: New File Relative to Project Root | プロジェクト(ディレクトリ)を開いている時に, そのルートからの相対パスでファイル名を指定して新しいファイルを作る. |
ファイル操作をCommand Paletteから叩けるようにする. マウスから離れるためには必須と言える. Advanced New Fileの方が適切かもしれないけどまだちゃんと使っていないので不明.
FindKeyConflicts
キーバインドの衝突を見てくれるらしい. そのうち衝突しそうだったので導入.
Shell Command
Command PaletteからShell Commandを選択すると1行シェルコマンドが打てる. でその結果が新しいタブに出力される. emacsのM-x shell-command
に似ているけど, 新しいタブを作る点が若干微妙. 別グループにして欲しかった(emacsみたいに)
現状できないこと
- scaladocの表示
- emacs clientだとできるみたいなので, 多分プラグインの実装か自分の読解力かどちらかに問題がある.
- ensimeによるデバッガの起動
- 多分ensimeの使い方を自分がわかっていないことに起因する.
- エラーが起きた箇所でのimport
- Ensime: Add Importで十分な気もするけど, あったほうが便利だなぁとも思う.
- エラー箇所へのジャンプ
- sbtの方にあったような気がするけどちゃんと見ていない.
- Indentation Guidesがscalaの関数をインデントとして認識しない.
- forは認識するのでなんかよくわからない.
- testとテスト対象の間の移動
- IntelliJ IDEAで実装されていたのはただのNaming Conventionを用いたものなので, 実装する気になれば割と簡単にできると思う.
C-x 2
とかで開いたグループを閉じるコマンド及びバインド
現状わからないこと
- EditorConfigとsublime textとScalaFormatのスタイルが矛盾した時どっちが優先されるのか.
- git-flowなどの使い方.
入れてみたいもの
- Alignment
- Project Manager
感想
メイン環境のSublime Textへの移動は決まった感じ. 個人的には初めてEclipseを使った時(それまでTeraPadだった)と同じくらい衝撃的(Command Paletteが特に).