我想在 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]