IRB可以写命令历史记录到文件中,但它不仅会在你的IRB会话结束。

我想更频繁地写出来我的命令历史记录:尽可能经常在每个命令(如外壳历史),但它并没有如此频繁

有没有.irbrc设置为这个?或者将我必须破解IRB源...

有帮助吗?

解决方案

已经砍死在IRB很多时候,运气好的话,用干净的解决方案。相反,我建议你 RIPL ,一个IRB替代。缺省情况下它保存历史更智能(即,甚至当你突然退出不与控制-d)。

如果你想每一个命令之后写历史,它很容易与RIPL,因为它的建成可扩展插件:

# add to your ~/.riplrc
module Ripl::ImmediateHistory
  # write to history after every eval
  def eval_input(input)
    super
    File.open(history_file, 'a') {|f| f.puts input }
  end

  # disable writing to history when ripl exits
  def write_history; end
end
Ripl::Shell.send :include, Ripl::ImmediateHistory

其他提示

从这里: http://blog.nicksieger.com/articles / 2006/04/23 /的调整-IRB

module Readline
  module History
    LOG = "#{ENV['HOME']}/.irb-history"

    def self.write_log(line)
      File.open(LOG, 'ab') {|f| f << "#{line}
"}
    end

    def self.start_session_log
      write_log("
# session start: #{Time.now}

")
      at_exit { write_log("
# session stop: #{Time.now}
") }
    end
  end

  alias :old_readline :readline
  def readline(*args)
    ln = old_readline(*args)
    begin
      History.write_log(ln)
    rescue
    end
    ln
  end
end

Readline::History.start_session_log
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top