diff 大好きエンジニアの @oohira です。コードにしろドキュメントにしろ、目的の修正と関係ない差分が混ざっているとテンションが下がりますよね。特に、空白やタブが意図せず混入していた暁には、「コミット前に diff は確認したのか!」と叫びたくなります。
そんな私が好きな IntelliJ IDEA のニッチ機能が、編集中のコードとクリップボードのテキストを比較できる 「Compare with Clipboard」 機能です。
使い方
- あらかじめ比較対象のコードをコピーしてクリップボードに入れておく
- IntelliJ IDEA でクリップボードと比較したいコードを範囲選択する
- 右クリックから
Compare with Clipboard
を実行する
何が嬉しいのか
エンジニアであれば誰しも次のようなシーンで diff を使ったことがあると思います。
- あるファイルをコミットする前に、ローカルで加えた修正の差分を確認する
- あるファイルを過去のコミット(リビジョン)と比較し、修正の差分を確認する
- 2つのファイルを比較し、重複コードや実装差異を確認する
しかし、これらはいずれもファイル単位の比較となるため、もっと細かい粒度で比較したい場合には不便です。例えば、次のようなシーンではクリップボードと直接 diff を取れると、該当コードを一度ファイルに保存する必要がないのでとても便利です。
- リファクタリングで 2 つのファイルにある類似メソッドを共通化するときに、たしかに同じ(あるいは違う)ということを確認したい
- 2 つのファイルにあるクラスが共通のインタフェースを実装しているが、メソッドの定義順がばらばらなのでファイル同士ではうまく差分を確認できない
- コマンドラインなどの実行結果をエディタの一部分と比較したい(Macだと
pbcopy
コマンドでクリップボードに積めるので)
まとめ
IntelliJ IDEA の「Compare with Clipboard」機能を簡単に紹介しました。そんなにしょっちゅう使う機能ではありませんが、リファクタリングのときなどにはとても重宝するので、こんなニッチな機能まで備えている IntelliJ IDEA はやっぱり素敵です。
脱線しますが、未だに WinMerge より使いやすいと思える Mac 用の GUI の diff ツールに出会えずに困っています。有償ならあるのかもしれませんが、Mac の数少ない不満の 1 つです。情報をお持ちの方がいればそっと教えてくださいませ。