То, что вы спрашиваете, возможно с 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}"
Кстати, я честно пытался использовать HighLine, но мне показалось, что это не альтернатива. Одной из неутешительных причин был тот факт, что HighLine#ask
читает клавиши перемещения курсора как обычный ввод. Я перестал смотреть в этом направлении после такого рода открытия.