Ah, có vẻ như thư viện chuẩn là bạn của tôi sau tất cả. Những gì tôi đang tìm kiếm là thư viện Readline.
Đốc và các ví dụ ở đây: http://www.ruby-doc.org/stdlib-1.9.3/libdoc/readline/rdoc/Readline.html
Đặc biệt, đây là một ví dụ điển hình từ trang đó để hiển thị như thế nào hoàn thành công trình:
require 'readline'
LIST = [
'search', 'download', 'open',
'help', 'history', 'quit',
'url', 'next', 'clear',
'prev', 'past'
].sort
comp = proc { |s| LIST.grep(/^#{Regexp.escape(s)}/) }
Readline.completion_append_character = " "
Readline.completion_proc = comp
while line = Readline.readline('> ', true)
p line
end
LƯU Ý: Các proc chỉ nhận được những lời cuối cùng bước vào. Nếu bạn muốn toàn bộ dòng đánh máy cho đến nay (vì bạn muốn làm hoàn bối cảnh cụ thể), hãy thêm dòng sau vào code trên:
Readline.completer_word_break_characters = "" #Pass whole line to proc each time
(Đây là theo mặc định thiết lập để một danh sách các nhân vật đại diện cho từ ranh giới và nguyên nhân chỉ từ cuối cùng được chuyển vào proc của bạn).
Một điều cần lưu ý là readline sử dụng thư viện giống như thư viện cơ bản của hệ thống, có thể là tự do. Vì vậy, một số tính năng của lib ruby readline sẽ không hoạt động hoặc sẽ gây ra sự cố. Tránh bất cứ điều gì mà các tài liệu nói là tùy chọn hoặc có thể không hoạt động. – davetron5000