是否可以配置IRB提示以动态更改?

Jul*_*ann 5 ruby prompt irb

我想在IRB中浏览文件系统并进行快速更改以反映当前的工作目录,但我无法弄清楚如何在每个命令后进行提示更新.最终我想在日常工作中使用IRB更多,让bash溜走.我在我的.irbrc中试过这个:

require 'fileutils'
include FileUtils

IRB.conf[:PROMPT][:CUSTOM] = {
    :PROMPT_N => "\e[1m:\e[m ",
    :PROMPT_I => "\e[1m#{pwd} >\e[m ",
    :PROMPT_S => "FOO",
    :PROMPT_C => "\e[1m#{pwd} >\e[m ",
    :RETURN => ""
}
IRB.conf[:PROMPT_MODE] = :CUSTOM
Run Code Online (Sandbox Code Playgroud)

但是IRB提示没有更新:

julianmann@mango:~ > irb
/users/julianmann > puts pwd
/users/julianmann
/users/julianmann > cd 'dev'
/users/julianmann > puts pwd
/users/julianmann/dev
/users/julianmann > 
Run Code Online (Sandbox Code Playgroud)

我真的很喜欢改变的提示.

Kel*_*vin 7

这是一个快速破解工作目录.它有点脆弱,但它适用于ruby 1.8.7和1.9.2.

将提示字符串设置为以下内容:

"%N(%m):%03n:%i %~> ".tap {|s| def s.dup; gsub('%~', Dir.pwd); end }
Run Code Online (Sandbox Code Playgroud)

irb本身不理解"%〜"指令,所以我用它来做替换.这个hack依赖于irb调用dup来生成提示的事实.