Ruby で値を整形して出力する

Vim でいう prettyprint.vim みたいな感じですが、リストやハッシュをいい感じに整形して出力する場合、pp を使えばいいみたいです。
こんな感じ。

[ソース]

require "pp"

data = { "data" => { 1 => "one", 2 => "two", 3 => "three" }, "name" => ["homu", "mami", "mado"] }

# これだとネストが浅いので puts と変わらない…
pp data


# 幅を指定して出力
PP.pp data, $>, 20

[出力]

{"data"=>{1=>"one", 2=>"two", 3=>"three"}, "name"=>["homu", "mami", "mado"]}
{"data"=>
  {1=>"one",
   2=>"two",
   3=>"three"},
 "name"=>
  ["homu",
   "mami",
   "mado"]}


こんな感じで出力されます。
これはこれで見やすいんですけど、個人的には [ や { の直後には改行して欲しかったり ] や } を先頭において欲しかったりとちょっと残念な感じですね。
まぁ単に好みなんですが。
こういうのを簡単に設定できればいいんですけどやり方はあるのかなぁ…。