是否可以将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 > 

我真的很想改变提示。

这是一个快速的技巧来获取工作目录。它有点脆弱,但它适用于 ruby 1.8.7 和 1.9.2。

将提示字符串设置为如下所示:

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

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

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

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

irb --prompt custom

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

附言这不是您问题的确切答案。但你可以尝试使用RUSH。

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

虽然它是静态的但看看,它可能会对你有所帮助在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/

如果它可能有助于讨论,尽管为时已晚: 可以在初始化 IRB 环境后更改提示,例如通过 IRB.conf[:MAIN_CONTEXT] 上的一些值

对于c = IRB.conf[:MAIN_CONTEXT]的绑定,影响提示格式的字段可能包括以下内容

  • c.prompt_c
  • c.prompt_i
  • c.prompt_n
  • c.prompt_s
  • c.return_format
  • c.auto_indent_mode
  • c.prompt_mode

直接更新prompt_i字段的示例:


irb(main):009:0> IRB.conf[:MAIN_CONTEXT].prompt_i="%N %m %i >>"
=> "%N %m %i >>"
irb main 0 >>

在 IRB 模块文档 (3.0.0) 中记录的格式说明符集之外,目前可能不支持在 IRB 中使用在显示提示时将计算的表达式。每个提示字符串都可以简单地用作文本格式字符串。

尽管有一些限制,但可以在初始化 IRB 后更新 IRB 提示符。

免责声明:这不保证更新与提示相关的所有状态值,在IRB.conf[:MAIN_CONTEXT]

最新更新