by shigemk2

当面は技術的なことしか書かない

まだEmacsで消耗してるの?

してる。

プログラマ歴5年、Emacs歴も5年なので、ほぼプログラマ歴=Emacs歴です(本当に初期の頃はメモ帳でやっていた)

ちなみにこの記事は、Scala Advent Calendar 2015の記事です。 www.adventar.org

昨日の記事の著者はこちらの方でした。

twitter.com

というわけで、Emacs(とあともろもろのツール)で消耗している話を書きます。

Scala開発について

まず前置きとして、Scala開発ではIntelliJ/Eclipseを使う人が多いと思われます。 達人プログラマーで、「エディタは使い倒したほうがいい」というお達しを頂いたので、プログラマ歴=Emacs歴の僕としては、やっぱりEmacsを捨てるつもりはさらさらありませんでした。

レヴィねえさんが、「こんなもんはな、撃てて当たりゃいいんだよ」っておっしゃっていましたが、同じ武器を使い倒したほうがいいに決まっています。

ただ私は、Emacsで何でもやる!というほど熱心かつラディカルなEmacs使いではないので、いろいろなものを組み合わせて使っています。

Emacs

emacs-ensime

Scala開発においては、もっぱらensime-emacsを使い続けています。

github.com

主に出来ること

  • コンパイルエラー検出
  • 変数/関数定義へのジャンプ
  • デバッグ
  • リファクタ
  • auto-completion

定義されている関数や変数がどこで使われているかはIntelliJでサーチできてもEnsimeではサーチできないっぽいので、そのあたりは、IssueなりPRなり投げてどうにかしたいです。

前職のJava使いが「Eclipseの使い方をマスターできればJavaのコーディングが出来る」と言いました。それくらいauto-completionは優秀ですが、あんまり優秀すぎるのも書き方忘れちゃうからどうなの?というのが個人的な意見です。

あと、個人的な課題ですが、自分のデバッグ能力が絶望的。

egg.el

前職以降で、ほかの人のIDEの使い方などを見ていると、Git関連はターミナルでやる人はいます。あと、EclipseのGitプラグインが使いこなせなくて、mergeできないとかrebaseできないとかって言う人は見たことがあります。

僕はこいつを使っています。

github.com

見た目はこんな感じ(過去記事から拾ってきました) http://f.st-hatena.com/images/fotolife/s/shigemk2/20130220/20130220021129.png

僕は、時と場合によって、使い分けています。あまりに細かいstagingとかはgit add -pですし、一括チェックアウトはgit checkout . ですし、rebase/mergeはコマンドです。普段のコミットとか、差分を見るときはこっちのほうが楽です。

emacs-helm

説明不要の選択的インターフェイス。 github.com

ファイルの絞込とかを行う。後述のghqと組み合わすと割りと便利。

peco

公式READMEでは、Simplistic interactive filtering toolと言われている。

github.com

使い方はこんな感じ(READMEを見たらいいとおもう)

https://camo.githubusercontent.com/02a067c4a9ab98841eed24a19783e25da5252026/687474703a2f2f7065636f2e6769746875622e696f2f696d616765732f7065636f2d64656d6f2d6768712e676966

なお、同じ機能で開発言語が違うライブラリがあるので、好みに合わせて使ったらいいと思います。

これを実行してみると、pecoがどれだけすごいかわかると思います(消したいプロセスには注意)

$ ps aux | peco | awk -F' ' '{print $2}' | xargs kill

いろいろな使い方が集約されているライブラリもあるので、.zshrcとか.bashrcに追加してみるといいんじゃないでしょうか。

github.com

ghq

公式には、Manage remote repository clonesと書かれています。GitHubリポジトリのcloneとか、cloneしたやつの一覧とかを表示できて便利です。これをpecoと組み合わせると、すごく幸せになります。

github.com

$ ghq list -p | peco

最近Issue投げました。

github.com

silver searcher

grepのもっと速いバージョンです。

github.com

これをpecoと組み合わせると結構しあわせになります。

function peco-ag () {
    ag $@ | peco --query "$LBUFFER" | awk -F : '{print "+" $2 " " $1}' | xargs emacsclient -nw
}

futurismo.biz

oh-my-zsh

これもまた、人によっては微妙かもしれませんが、gitのエイリアスとかはバシバシつかっています。なるたけ設定ファイル(.zshrc/.bashrc)が長大にならないようにしたいというのが多分設計思想何じゃないかなって思いっています。

github.com

最近peco絡みで、PR投げました。 github.com

まとめ

とりとめない文章になりました。 Emacsを起点として、なんかいろいろ使っているという、非常にベーシックな構成です。本当にベーシックな構成です。もうおわかりかもしれませんが、ブログですら一人で完結しがちなので、なんかGitterとかTwitterとかIssueとか投げています。

めりーーーーーーーーーーーーーーーーーくりすまーーーーーーーーーーーーーーーーーーーーーーーーーーーーーす

リンダキューブ 【PCエンジン】

リンダキューブ 【PCエンジン】