以前我使用的是Ruby 1.8,我的irb
命令提示符看起来像这样:
Air ~: irb
>> a = 1
=> 1
>> b = 2
=> 2
>> a + b
=> 3
我安装了rvm(和Ruby 1.9.2),现在我的irb
命令提示符如下所示:
Air ~: irb
ruby-1.9.2-p180 :001 > a = 1
=> 1
ruby-1.9.2-p180 :002 > b = 2
=> 2
ruby-1.9.2-p180 :003 > a + b
=> 3
有没有办法从命令行中删除ruby-1.9.2-p180 :001
?
答案 0 :(得分:19)
irb
手册页上有“Customizing prompt”部分。以下是我的例子:
IRB.conf[:PROMPT][:CUSTOM] = {
:PROMPT_I => ">> ",
:PROMPT_S => "%l>> ",
:PROMPT_C => ".. ",
:PROMPT_N => ".. ",
:RETURN => "=> %s\n"
}
IRB.conf[:PROMPT_MODE] = :CUSTOM
IRB.conf[:AUTO_INDENT] = true
要使用此功能,请将其添加到~/.irbrc
文件中(如果该文件不存在则创建该文件。)
答案 1 :(得分:16)
在~/.irbrc
中,只需添加
IRB.conf[:PROMPT_MODE] = :SIMPLE
答案 2 :(得分:8)
如果您经常运行irb
命令,请尝试运行irb --simple-prompt
。这大大缩短了提示,使其更容易理解。
答案 3 :(得分:2)
irb --simple-prompt
在Lynda.com上看到了这个。
答案 4 :(得分:1)
为避免在命令行中始终提供您想要的提示,您可以configure the prompt via the ~/.irbrc
config file:
$ echo "IRB.conf[:PROMPT_MODE] = :DEFAULT" > ~/.irbrc
$ irb
irb(main):001:0> quit
$ echo "IRB.conf[:PROMPT_MODE] = :SIMPLE" > ~/.irbrc
$ irb
>> quit
$
答案 5 :(得分:0)
在RVM中查看此note about IRB prompt。
请注意,您可以在主文件夹中创建.irbrc
文件,以获取IRB的各种设置。
例如,请参阅this document
您还可以puts IRB.conf[:PROMPT_MODE]
或puts IRB.conf
查看当前有效的所有各种设置。例如,在您的情况下,:PROMPT_MODE
可能设置为“RVM”。
答案 6 :(得分:0)
任何想添加即时时间戳的人,isn't possible yet(请选中“特殊字符串”部分),因此我以一种猴子修补的方式实现了它:
module IrbTimePrompt
def prompt(prompt, ltype, indent, line_no)
# I used %T as time format, but you could use whatever you want to.
# Check https://apidock.com/ruby/Time/strftime for more options
p = prompt.dup.gsub(/%t/, Time.new.strftime('%T'))
super(p, ltype, indent, line_no)
end
end
module IRB
class Irb
prepend IrbTimePrompt
end
end
现在,将其添加到您的lib/
项目文件夹中(如果是Rails项目,请确保lib/
是config.autoload_paths
中config/application.rb
的一部分)或更具破坏性的方式(不推荐),在您的本地ruby实例中查找lib/irb.rb
文件,并在def prompt
方法中,向该方法添加新的when
条件,例如:
when "t"
Time.now.strftime('%-d-%-m %T%Z')
然后在您的.irbrc
文件(它可以位于您的主文件夹或根项目文件夹中)中,您可以修改提示。我要添加当前提示,但请根据您的需要进行调整:
def rails_prompt
# This is my base prompt, displaying line number and time
def_prompt = '[%01n][%t]'
# Maybe you're only running as `irb` an not `rails console`, so check first
# if rails is available
if defined? Rails
app_env = Rails.env[0...4]
if Rails.env.production?
puts "\n\e[1m\e[41mWARNING: YOU ARE USING RAILS CONSOLE IN PRODUCTION!\n" \
"Changing data can cause serious data loss.\n" \
"Make sure you know what you're doing.\e[0m\e[22m\n\n"
app_env = "\e[31m#{app_env}\e[0m" # red
else
app_env = "\e[32m#{app_env}\e[0m" # green
end
def_prompt << "(\e[1m#{app_env}\e[22m)" # bold
end
IRB.conf[:PROMPT] ||= {}
IRB.conf[:PROMPT][:WITH_TIME] = {
PROMPT_I: "#{def_prompt}> ",
PROMPT_N: "#{def_prompt}| ",
PROMPT_C: "#{def_prompt}| ",
PROMPT_S: "#{def_prompt}%l ",
RETURN: "=> %s\n",
AUTO_INDENT: true,
}
IRB.conf[:PROMPT_MODE] = :WITH_TIME
end
rails_prompt
然后启动irb
或rails console
并检查效果:
[1][13:01:15](deve)> 'say hello to your new prompt'
=> "say hello to your new prompt"
[2][13:01:23](deve)>