我想在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 >
型
我真的很想改变提示。
6条答案
按热度按时间wixjitnu1#
这里有一个获取工作目录的快速方法。它有点脆弱,但它在ruby 1.8.7和1.9.2上工作。
将提示符字符串设置为如下内容:
字符串
irb本身不理解“%~”指令,所以我用它来替换。这个技巧依赖于irb调用dup来生成提示符。
8tntrjer2#
另一个选择是使用fresh。它基于irb替代ripl,并且还将当前目录显示为提示符:]
9fkzdhlc3#
你必须像这样运行(别名)irb
字符串
或者将
IRB.conf[:PROMPT_MODE] = :CUSTOM
添加到您的.irbrcP.S.这不是对你问题的确切回答。但是你可以尝试使用RUSH。
它没有当前工作目录的概念,但它很容易配置。
b0zn9rqh4#
虽然它是一种静态的,但看看,它可能会帮助你在Linux(Ubuntu 14.04)
您只需按照一些简单的步骤就可以更改irb控制台的恼人提示
打开您的终端
后藤到位置/home/leapfrog/.rvm/scripts
字符串
打开文件'irbrc. rb',使用超级用户的能力覆盖
型
你可以看到这样的一部分代码。
型
只需保存文件并重新启动irb控制台进一步模式,您可以看到此链接https://cbabhusal.wordpress.com/2014/12/22/ruby-rvm-change-prompt-of-irb/
okxuctiv5#
如果它可能有助于讨论,尽管为时已晚:可以在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 module documentation (3.0.0)中记录的格式说明符集之外,目前可能不支持在IRB中使用在显示提示时将被评估的表达式。每个提示字符串可以简单地用作文字格式字符串。
尽管有一些限制,但在IRB初始化后更新IRB提示是可能的。
免责声明:这不保证更新所有与提示相关的状态值,在
IRB.conf[:MAIN_CONTEXT]
下vql8enpb6#
Kelvin聪明的“快速破解”答案依赖于
dup
,在最新版本的IRB(现在是v1.11.0
)中不再起作用。这里有一个允许提供动态IRB提示的替代方案,它利用了
main.to_s
在IRB提示符中作为%m
提供的事实:字符串