我想在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)
我真的很喜欢改变的提示.
这是一个快速破解工作目录.它有点脆弱,但它适用于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来生成提示的事实.