我希望能在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
但是IRB提示没有更新:
julianmann@mango:~ > irb
/users/julianmann > puts pwd
/users/julianmann
/users/julianmann > cd 'dev'
/users/julianmann > puts pwd
/users/julianmann/dev
/users/julianmann >
我希望提示框的内容能够更改。
a.tap { |i| ... }
is basicallyi = a; ... ; a = i
- Doriantap
没有:1. 重新分配a
到结尾;2. 定义分配在封闭范围内的任何本地变量。相反,这两者是等效的 - Tap:s="a"; s2="b"; s2.tap{|s| p "Inside: #{s}" }; p [s, s2]
/ Lambda:s="a"; s2="b"; lambda {|s| p "Inside: #{s}" }.call(s2); p [s, s2]
. 注意块变量s
不会覆盖块外现有的s
。 - Kelvinclass MyPrompt < String
,然后将提示设置为MyPrompt.new('some nice prompt')。然后我可以更好地控制提示并覆盖方法而不会干扰String类。 - 244an