Livedoorブログからの移動

前記事の続き. 今回は, 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みたいに)

現状できないこと

  1. scaladocの表示
    • emacs clientだとできるみたいなので, 多分プラグインの実装か自分の読解力かどちらかに問題がある.
  2. ensimeによるデバッガの起動
    • 多分ensimeの使い方を自分がわかっていないことに起因する.
  3. エラーが起きた箇所でのimport
    • Ensime: Add Importで十分な気もするけど, あったほうが便利だなぁとも思う.
  4. エラー箇所へのジャンプ
    • sbtの方にあったような気がするけどちゃんと見ていない.
  5. Indentation Guidesがscalaの関数をインデントとして認識しない.
    • forは認識するのでなんかよくわからない.
  6. testとテスト対象の間の移動
    • IntelliJ IDEAで実装されていたのはただのNaming Conventionを用いたものなので, 実装する気になれば割と簡単にできると思う.
  7. C-x 2とかで開いたグループを閉じるコマンド及びバインド

現状わからないこと

  1. EditorConfigとsublime textとScalaFormatのスタイルが矛盾した時どっちが優先されるのか.
  2. git-flowなどの使い方.

入れてみたいもの

  • Alignment
  • Project Manager

感想

メイン環境のSublime Textへの移動は決まった感じ. 個人的には初めてEclipseを使った時(それまでTeraPadだった)と同じくらい衝撃的(Command Paletteが特に).

参考サイト