less => lv 日本語対応のページャを使う
ページャとしてlessを使ってたけど、日本語が表示できないので、Cygwinの日本語化パッケージに置いてあるlvを使うことにした。以下のページからダウンロードできる。
Index of /cygwin_je/release/lv
(googleで「site:http://cygwin-je.sourceforge.jp/ inurl:lv」としても検索できる。)
ダウンロードしたら、解凍して、lv.exeをパスの通ったところ(/usr/local/bin/とか)に入れておく。manページもついてくるので、C:\cygwin\usr\share\man\man1とかに入れておく(実は、何でそこに入れればよいかよく理解してないんだけど…)。
また、文字コードをsjisとするために、オプションをつけてやる。
alias lv='lv -Os'
試しに使ってみるとこんな感じ。
refe String.to_s | lv String#to_s --- to_s --- to_str self を返します。
参考
irb の中で refe を使う
~/.irbrc に以下を追加するだけ。
module Kernel def r(arg) puts `refe #{arg}` end private :r end class Module def r(meth = nil) if meth if instance_methods(false).include? meth.to_s puts `refe #{self}##{meth}` else super end else puts `refe #{self}` end end end
こんな感じで使うらしい。
>> Array.r :inspect Array < Object#inspect --- inspect オブジェクトを人間が読める形式に変換した文字列を返します。 組み込み関数 p は、このメソッドの結果を使用して オブジェクトを表示します。 => nil
また、ri も使いたいときは、ソースコード中のメソッド名 r を何か適当な名前に変えるだけでOK。一応、載せておく(コマンド名は、素直に ri にしておいた)。
module Kernel def ri(arg) puts `ri #{arg}` end private :ri end class Module def ri(meth = nil) if meth if instance_methods(false).include? meth.to_s puts `ri #{self}##{meth}` else super end else puts `ri #{self}` end end end
使い方は、refe の時と同じ。
$ irb >> Array.ri :inspect ---------------------------------------------------------- Array#inspect array.inspect -> string ------------------------------------------------------------------------ Create a printable version of _array_. => nil
メソッド名 r から ri の置換を手書きで行うのが面倒なら、rubyでワンライナー書くのもよいかもしれない。(ピッケル本 p152 参照)
$ ruby -pi.bak -e "gsub(/r\(/, 'ri\(')" .irbrc
ちなみに、-i オプションに .bak のようなバックアップファイルの拡張子は必須みたいだ。.bak をつけないで実行すると、
$ ruby -pi -e "gsub(/r\(/, 'ri\(')" hoge.txt -e:1: Can't do inplace edit without backup (fatal)
となって、置換できない。以下のメーリングリスト(ruby-list)によると、Windowsの場合はバックアップ無しで置換できないらしい。
[ruby-list:38066] Re: ファイル書換え?
余談だけど、ri のバージョンが古い気がする。どうやったら最新版にできるんだろう? refe だったら、
$ gem update refe
とすれば簡単に更新できて便利なんだけどな。まあ、今日は遅いからそろそろ寝て、後で考えよう。
参考
:情報源
Rubygarden.org:恐らく上記情報源のネタ元
:元々はメーリングリスト(ruby-talk)の発言らしい