论坛首页 编程语言技术论坛

加强版irb

浏览 16419 次
锁定老帖子 主题:加强版irb
该帖已经被评为良好帖
作者 正文
   发表时间:2006-10-20  
Ruby的irb和Unix shell一样,通过定制可以提供更多特性与方便。

配置:
1. 安装以下gem: wirble, map_by_method, what_methods
2. 建立一个名叫_irbrc文件,内容如下:
# Compiled by Cookoo
# Reference:
#   http://drnicwilliams.com/2006/10/12/my-irbrc-for-consoleirb
#   http://pablotron.org/software/wirble/ 

require 'rubygems'
require 'map_by_method'
require 'what_methods'
require 'wirble'
require 'irb/completion'

IRB.conf[:AUTO_INDENT]=true

class Regexp
  def show(a)
    a =~ self ? "#{$`}<<#{$&}>>#{$'}" : "no match"
  end
end

Wirble.init
Wirble.colorize unless Config::CONFIG['host_os'] == 'mswin32'

3. 该文件放置位置随意,建议在linux下放到home下。然后在linux和win32下设置环境变量IRBRC,指向该文件的路径(包括文件名本身)。同时win32下还需设置一个HOME环境变量,建议指向c:\Documents and Settings\your_account

----------------------------

搞好了吧?SHOW TIME!
来体验一下多了哪些功能:

(*代表只限linux平台提供)
*1. 输出结果语法着色
2. 自动换行缩进
>>if i = 1
>>  puts i

3. 按两次tab, 自动补全(这个其实win32下本来就有)
>> [].e #tab tab                                           
[].each             [].empty?           [].equal? 
[].each_index       [].entries          [].extend 
[].each_with_index  [].eql? 
                     
*4. 直接使用ri 'something'
5. 直接使用pp
6. 命令行提示符改成>>和输出=>对齐
7. what? 猜api专用:
>> 3.14.what? 3  #什么方法返回3?                                             
3.14.to_int == 3                                              
3.14.floor == 3                                               
3.14.round == 3                                               
3.14.to_i == 3                                                
3.14.prec_i == 3                                              
3.14.truncate == 3                                            
=> ["to_int", "floor", "round", "to_i", "prec_i", "truncate"] 

8. 动态map:
>> [1,2,3].map{|x| x.succ} #常规方式
=> [2, 3, 4]              
>> [1,2,3].map_succ #快捷方式      
=> [2, 3, 4] 
    
在Rails console里看查询结果很好用       
9. irb命令行历史记录:下次重开irb依然保留
10. 对象研究快捷方式
>> poc Math #展示常量                                                                  
=> ["E", "PI"]                                                                  
>> po Math #展示非继承自Object的方法                                                                      
=> ["acos", "acosh", "asin", "asinh", "atan", "atan2", "atanh", "cos", "cosh", "
erf", "erfc", "exp", "frexp", "hypot", "ldexp", "log", "log10", "sin", "sinh", "
sqrt", "tan", "tanh"] 
                                                         
11. regexp研究快捷方式
>> /[a-z]+/.show "pi is 3.14"
=> "<<pi>> is 3.14"


   发表时间:2006-10-20  
Cool!!

小缺点:第1个缩近不能回退,其它都不错。

最后一个代码是不是贴少了?

能不能在script/console里用?我试了一下似乎是不行,要修改吗?
0 请登录后投票
   发表时间:2006-10-20  
缩进是irb的固有小瑕。结尾刚才手误了。

Linux下的rails console经研究发现还是只认IRBRC环境变量,不认home下的.irbrc或者_irbrc。所以和win32一样设一下就可以了。

另外win32下的irb不知把外部路径改成什么了,造成无法直接调用PATH里的ri,古怪
0 请登录后投票
   发表时间:2006-10-20  
http://wiki.rubygarden.org/Ruby/page/show/Irb/TipsAndTricks

历史功能,用方向键

tab键,代码不全的提示

——下划线,上次的运行结果

copy paste的功能需要,增强后才有

0 请登录后投票
   发表时间:2006-10-21  
wiki上的tips大部分早以包括在Wirble里了
0 请登录后投票
   发表时间:2006-10-21  
to cookoo:
C:\Documents and Settings\Administrator>irb
load error: D:\Program Files\ruby\bin\_irbrc
ArgumentError: couldn't find HOME environment -- expanding `~/.irb_history'
        D:/Program Files/ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:94
:in `expand_path'
        D:/Program Files/ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:94
:in `load_history'
        D:/Program Files/ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:11
2:in `initialize'
        D:/Program Files/ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:50
5:in `new'
        D:/Program Files/ruby/lib/ruby/gems/1.8/gems/wirble-0.1.2/./wirble.rb:50
5:in `init'
        D:\Program Files\ruby\bin\_irbrc:26
        D:/Program Files/ruby/lib/ruby/1.8/irb/init.rb:207:in `load'
        D:/Program Files/ruby/lib/ruby/1.8/irb/init.rb:207:in `run_config'
        D:/Program Files/ruby/lib/ruby/1.8/irb/init.rb:20:in `setup'

------------------------------------
是否需要指定一个'~/.irb_history',这个如何指定?
0 请登录后投票
   发表时间:2006-10-21  
你设一下HOME环境变量,一般win32下就是C:\Documents and Settings\your_account
0 请登录后投票
   发表时间:2006-10-21  
Thank you!

随便问一下,JRuby 有没有好的IDE或是插件?
0 请登录后投票
   发表时间:2006-10-22  
我不用jruby所以不清楚
0 请登录后投票
   发表时间:2006-10-24  
I found a bug in map_by_methods
Please comment map_by_methods like
require 'rubygems'
#require 'map_by_method'
require 'what_methods'
require 'wirble'
require 'irb/completion'
.....

The bug detail is described in my blog.
http://lightyror.blogspot.com/2006/10/mapbymethod-irb-bug.html
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics