什么会给我一些像ruby readline的默认值?

jes*_*199 10 ruby console command-line readline command-line-interface

如果我想在终端上输入一个已输入默认值的提示,我该怎么做?

Ruby的标准Readline.readline()让我设置历史但不填写默认值(据我所知,至少)

我想要这样的东西:

码:

input = Readline.readline_with_default('>', 'default_text')
Run Code Online (Sandbox Code Playgroud)

安慰:

> default_text|
Run Code Online (Sandbox Code Playgroud)

Ale*_*una 8

你问的是可能的Readline.有一个回调,你可以在显示提示后获得控制权并将一些文本插入读缓冲区.

这对我有用:

Readline.pre_input_hook = -> do
  Readline.insert_text "hello.txt"
  Readline.redisplay

  # Remove the hook right away.
  Readline.pre_input_hook = nil
end

input = Readline.readline("Filename: ", false)
puts "-- input:#{input.inspect}"
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我公平地尝试使用HighLine,但它似乎是我无法替代的.令人失望的原因之一是HighLine#ask将光标移动键作为常规输入读取.在那种发现之后,我不再朝那个方向看.

  • 被警告!这在 MacOS X 上的 Readline 实现中不起作用。我尝试了一个小时来找出它不起作用的原因。没有错误,没有警告,什么都没有,就是不起作用。在ubuntu下,可以正常运行。 (2认同)

Pab*_*zzi 5

+1到高线

尝试使用类似的东西:

require 'highline/import'
input = ask('> ') {|q| q.default = 'default_text'} # > |default_text|
Run Code Online (Sandbox Code Playgroud)


Far*_*rel 3

听起来像是 ncurses 的工作。看起来 rbcurse ( http://rbcurse.rubyforge.org/ ) 是目前维护得最好的 API。