Можно ли настроить приглашение IRB для динамического изменения? - PullRequest
5 голосов
/ 20 мая 2011

Я хотел бы перемещаться по файловой системе в 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 ]

7 голосов
/ 20 мая 2011

Вот быстрый взлом, чтобы получить рабочий каталог. Это довольно хрупко, но работает на ruby ​​1.8.7 и 1.9.2.

Установите в строке приглашения что-то вроде этого:

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

Директива "% ~" не понимается самим irb, поэтому я использовал ее для замены. Этот взлом основан на том, что irb вызывает dup для генерации приглашения.

3 голосов
/ 21 мая 2011

Другой вариант - использовать fresh . Он основан на альтернативе irb ripl , а также отображает текущий каталог в качестве приглашения:]

0 голосов
/ 24 декабря 2014

Хотя это статично, но взгляните, это может помочь вам В 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/

0 голосов
/ 20 мая 2011

Вы должны запустить (псевдоним) IRB, как это так

irb --prompt custom

Или добавьте IRB.conf[:PROMPT_MODE] = :CUSTOM к вашему .irbrc

P.S. Это не ТОЧНЫЙ ответ на ваш вопрос. Но вы можете попробовать использовать RUSH .

У него нет концепции текущего рабочего каталога, но его легко настроить.

...