してる。
プログラマ歴5年、Emacs歴も5年なので、ほぼプログラマ歴=Emacs歴です(本当に初期の頃はメモ帳でやっていた)
ちなみにこの記事は、Scala Advent Calendar 2015の記事です。 www.adventar.org
昨日の記事の著者はこちらの方でした。
というわけで、Emacs(とあともろもろのツール)で消耗している話を書きます。
Scala開発について
まず前置きとして、Scala開発ではIntelliJ/Eclipseを使う人が多いと思われます。 達人プログラマーで、「エディタは使い倒したほうがいい」というお達しを頂いたので、プログラマ歴=Emacs歴の僕としては、やっぱりEmacsを捨てるつもりはさらさらありませんでした。
レヴィねえさんが、「こんなもんはな、撃てて当たりゃいいんだよ」っておっしゃっていましたが、同じ武器を使い倒したほうがいいに決まっています。
ただ私は、Emacsで何でもやる!というほど熱心かつラディカルなEmacs使いではないので、いろいろなものを組み合わせて使っています。
Emacs
emacs-ensime
Scala開発においては、もっぱらensime-emacsを使い続けています。
主に出来ること
- コンパイルエラー検出
- 変数/関数定義へのジャンプ
- デバッグ
- リファクタ
- auto-completion
定義されている関数や変数がどこで使われているかはIntelliJでサーチできてもEnsimeではサーチできないっぽいので、そのあたりは、IssueなりPRなり投げてどうにかしたいです。
前職のJava使いが「Eclipseの使い方をマスターできればJavaのコーディングが出来る」と言いました。それくらいauto-completionは優秀ですが、あんまり優秀すぎるのも書き方忘れちゃうからどうなの?というのが個人的な意見です。
あと、個人的な課題ですが、自分のデバッグ能力が絶望的。
egg.el
前職以降で、ほかの人のIDEの使い方などを見ていると、Git関連はターミナルでやる人はいます。あと、EclipseのGitプラグインが使いこなせなくて、mergeできないとかrebaseできないとかって言う人は見たことがあります。
僕はこいつを使っています。
僕は、時と場合によって、使い分けています。あまりに細かいstagingとかはgit add -pですし、一括チェックアウトはgit checkout . ですし、rebase/mergeはコマンドです。普段のコミットとか、差分を見るときはこっちのほうが楽です。
emacs-helm
説明不要の選択的インターフェイス。 github.com
ファイルの絞込とかを行う。後述のghqと組み合わすと割りと便利。
peco
公式READMEでは、Simplistic interactive filtering toolと言われている。
使い方はこんな感じ(READMEを見たらいいとおもう)
なお、同じ機能で開発言語が違うライブラリがあるので、好みに合わせて使ったらいいと思います。
@shigemk2 はい(Rubyにも fzfというのがあります). Windowsを含めたインストールのしやすさだと pecoでしょうか. 柔軟性だと LLということもあり, percolだと思います. あとは pecoは複数人でメンテしているというぐらいでしょうか.
— Syohei YOSHIDA(おっさん) (@syohex) December 19, 2015
これを実行してみると、pecoがどれだけすごいかわかると思います(消したいプロセスには注意)
$ ps aux | peco | awk -F' ' '{print $2}' | xargs kill
いろいろな使い方が集約されているライブラリもあるので、.zshrcとか.bashrcに追加してみるといいんじゃないでしょうか。
ghq
公式には、Manage remote repository clonesと書かれています。GitHubリポジトリのcloneとか、cloneしたやつの一覧とかを表示できて便利です。これをpecoと組み合わせると、すごく幸せになります。
$ ghq list -p | peco
最近Issue投げました。
silver searcher
grepのもっと速いバージョンです。
これをpecoと組み合わせると結構しあわせになります。
function peco-ag () { ag $@ | peco --query "$LBUFFER" | awk -F : '{print "+" $2 " " $1}' | xargs emacsclient -nw }
oh-my-zsh
これもまた、人によっては微妙かもしれませんが、gitのエイリアスとかはバシバシつかっています。なるたけ設定ファイル(.zshrc/.bashrc)が長大にならないようにしたいというのが多分設計思想何じゃないかなって思いっています。
最近peco絡みで、PR投げました。 github.com
まとめ
とりとめない文章になりました。 Emacsを起点として、なんかいろいろ使っているという、非常にベーシックな構成です。本当にベーシックな構成です。もうおわかりかもしれませんが、ブログですら一人で完結しがちなので、なんかGitterとかTwitterとかIssueとか投げています。
めりーーーーーーーーーーーーーーーーーくりすまーーーーーーーーーーーーーーーーーーーーーーーーーーーーーす
- 発売日: 1995/05/26
- メディア: Video Game
- クリック: 4回
- この商品を含むブログ (2件) を見る