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

时间:2011-05-20 17:21:38

标签: 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

但IRB提示未更新:

julianmann@mango:~ > irb
/users/julianmann > puts pwd
/users/julianmann
/users/julianmann > cd 'dev'
/users/julianmann > puts pwd
/users/julianmann/dev
/users/julianmann > 

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

4 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:3)

另一种选择是使用fresh。它基于irb替代ripl,并且还将当前目录显示为其提示符:]

答案 2 :(得分:0)

你必须像这样运行(别名)irb

irb --prompt custom

或者将IRB.conf[:PROMPT_MODE] = :CUSTOM添加到.irbrc

P.S。这不是您问题的准确答案。但您可以尝试使用RUSH

它没有当前工作目录的概念,但它很容易配置。

答案 3 :(得分:0)

虽然有点静态 但看看,它可能会帮助你 在Linux(Ubuntu 14.04)

只需按照一些简单的步骤

即可更改irb控制台的恼人提示

打开终端

转到位置/home/leapfrog/.rvm/scripts

$ cd ~/.rvm/scripts

打开文件'irbrc.rb',使用超级用户权限覆盖

$ sudo gedit irbrc.rb

您可以看到这样的部分代码。用后面的代码替换前者

# Set up the prompt to be RVM specific.
#@prompt = {
# :PROMPT_I => "#{rvm_ruby_string} :%03n > ", # default prompt
# :PROMPT_S => "#{rvm_ruby_string} :%03n%l> ", # known continuation
# :PROMPT_C => "#{rvm_ruby_string} :%03n > ",
# :PROMPT_N => "#{rvm_ruby_string} :%03n?> ", # unknown continuation
# :RETURN => " => %s \n",
# :AUTO_INDENT => true
#}

@prompt = {
 :PROMPT_I => "ROR: %03n > ", # default prompt
 :PROMPT_S => "%03n%l> ", # known continuation
 :PROMPT_C => "%03n > ",
 :PROMPT_N => "%03n?> ", # unknown continuation
 :RETURN => " O/P => %s \n",
 :AUTO_INDENT => true
}

只需保存文件并重启irb控制台即可 进一步模式,您可以看到此链接 https://cbabhusal.wordpress.com/2014/12/22/ruby-rvm-change-prompt-of-irb/