このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。 最新版のマニュアルへ

Ruby 3.0 リファレンスマニュアル

module Reline

[edit]

要約

GNU Readline 互換の行編集機能を提供するモジュールです。

Reline.readline でユーザからの一行入力を、Reline.readmultiline で複数行の入力を取得できます。入力時には行内編集が可能で、vi モードと Emacs モードが用意されています。デフォルトは Emacs モードです。

入力した内容は入力履歴(ヒストリ)として記録できます。履歴には定数 Reline::HISTORY(Array のサブクラスのインスタンス)でアクセスできます。

挙動のカスタマイズは Reline モジュールのアトリビュートへの代入で行います。主なものは以下の通りです。

キーバインドや変数は、GNU Readline と同様に inputrc ファイルで設定できます。inputrc は環境変数 INPUTRC~/.inputrc、XDG 設定ディレクトリの readline/inputrc から探索されます。inputrc 内では $if Ruby(または $if Reline)の条件ブロックも利用できます。

目次

特異メソッド

特異メソッド

auto_indent_proc -> Proc | nilRuby 2.7 から[permalink][rdoc][edit]
auto_indent_proc=(proc)

複数行編集時に、行頭の自動インデントの幅を計算する Proc オブジェクトを取得/設定します。デフォルトは nil です。

proc は次の 4 つの引数を受け取り、インデントに使う半角スペースの個数を整数で返すようにします。nil を返すとインデントを変更しません。対象の行の行頭の空白は、返した個数の半角スペースに置き換えられます。

  • lines: 入力中の各行の文字列の配列
  • line_index: インデントを計算する対象の行の lines 内の位置
  • byte_pointer: 行内のカーソルのバイト単位の位置
  • is_newline: 改行の入力直後かどうか
[PARAM] proc:
インデント幅を返す Proc オブジェクト、または nil を指定します。
basic_quote_characters -> StringRuby 2.7 から[permalink][rdoc][edit]
basic_quote_characters=(string)

クオートとみなす文字の集合を取得/設定します。

デフォルトは "'(ダブルクオートとシングルクオート)です。

設定値は保持されますが、現在の reline の補完処理では使用されません。クオートの判定には Reline.completer_quote_characters が使われます。

[PARAM] string:
文字列を指定します。
basic_word_break_characters -> StringRuby 2.7 から[permalink][rdoc][edit]
basic_word_break_characters=(string)

単語の区切りを示す文字の集合を取得/設定します。

デフォルトは " \t\n`><=;|&{("(半角スペースを含む)です。

設定値は保持されますが、現在の reline の補完処理では使用されません。補完の単語の区切りには Reline.completer_word_break_characters が使われます。

[PARAM] string:
文字列を指定します。
completer_quote_characters -> StringRuby 2.7 から[permalink][rdoc][edit]
completer_quote_characters=(string)

ユーザの入力の補完を行う際、クオートとみなす文字の集合を取得/設定します。クオートの内側では、Reline.completer_word_break_characters= で指定した文字も通常の文字として扱われます。

デフォルトは "'(ダブルクオートとシングルクオート)です。

[PARAM] string:
文字列を指定します。
completer_word_break_characters -> StringRuby 2.7 から[permalink][rdoc][edit]
completer_word_break_characters=(string)

ユーザの入力の補完を行う際、単語の区切りを示す文字の集合を取得/設定します。

デフォルトは " \t\n`><=;|&{("(半角スペースを含む)です。

[PARAM] string:
文字列を指定します。
completion_append_character -> String | nilRuby 2.7 から[permalink][rdoc][edit]
completion_append_character=(string)

補完が 1 つの候補に確定したときに、末尾に付加する文字を取得/設定します。デフォルトは nil(何も付加しない)です。

1 文字しか指定できないため、string に 2 文字以上の文字列を指定した場合は最初の 1 文字だけが使われます。半角スペース " " などの単語を区切る文字を指定すれば、補完後に続けて入力する際に便利です。

[PARAM] string:
付加する 1 文字を指定します。nil を指定すると何も付加しません。
completion_case_fold -> boolRuby 2.7 から[permalink][rdoc][edit]
completion_case_fold=(bool)

ユーザの入力を補完する際、大文字と小文字を同一視するかどうかを取得/設定します。bool が真ならば同一視します。デフォルトは nil です。

inputrc の set completion-ignore-case on でも設定できます。

[PARAM] bool:
大文字と小文字を同一視する(true)/しない(false)を指定します。
completion_proc -> Proc | nilRuby 2.7 から[permalink][rdoc][edit]
completion_proc=(proc)

ユーザからの入力を補完するときの候補を取得する Proc オブジェクトを取得/設定します。デフォルトは nil で、このときは補完を行いません。

proc は、引数に入力中の単語(カーソル位置までの、Reline.completer_word_break_characters に含まれる文字で区切られた文字列)を受け取り、候補の文字列の配列を返すようにします。 2 個以上の引数を受け取る proc を指定した場合は、第 2 引数に単語より前の文字列が、第 3 引数に単語より後ろの文字列も渡されます。

補完は Tab キーの押下で実行されます。

[PARAM] proc:
補完候補を取得する Proc オブジェクト、または nil を指定します。
例: foo、foobar、foobaz を補完する
require 'reline'

WORDS = %w(foo foobar foobaz)

Reline.completion_proc = proc { |word|
  WORDS.grep(/\A#{Regexp.quote(word)}/)
}

while buf = Reline.readline("> ")
  print("-> ", buf, "\n")
end
completion_quote_character -> String | nilRuby 2.7 から[permalink][rdoc][edit]

ユーザ入力の補完中(Reline.completion_proc の呼び出し中)に、開いたまま閉じられていないクオート文字(Reline.completer_quote_characters のいずれか)があればそれを返します。補完中以外は nil を返します。

dig_perfect_match_proc -> Proc | nilRuby 2.7 から[permalink][rdoc][edit]
dig_perfect_match_proc=(proc)

補完候補が 1 つに確定している状態で、さらに補完しようとしたときに呼ばれる Proc オブジェクトを取得/設定します。proc は確定した候補の文字列を引数として呼ばれます。デフォルトは nil です。

[PARAM] proc:
Proc オブジェクト、または nil を指定します。
emacs_editing_mode -> nilRuby 2.7 から[permalink][rdoc][edit]

編集モードを Emacs モードにします。デフォルトは Emacs モードです。

[SEE_ALSO] Reline.vi_editing_modeReline.emacs_editing_mode?

emacs_editing_mode? -> boolRuby 2.7 から[permalink][rdoc][edit]

編集モードが Emacs モードかどうかを返します。

[SEE_ALSO] Reline.emacs_editing_mode

filename_quote_characters -> StringRuby 2.7 から[permalink][rdoc][edit]
filename_quote_characters=(string)

ファイル名の補完の際にクオートするための文字の集合を取得/設定します。デフォルトは "" です。

設定値は保持されますが、現在の reline の補完処理では使用されません。

[PARAM] string:
文字列を指定します。
get_screen_size -> [Integer, Integer]Ruby 2.7 から[permalink][rdoc][edit]

端末のサイズを [行数, 桁数] の配列で返します。

input=(input)Ruby 2.7 から[permalink][rdoc][edit]

Reline が入力の読み取りに使うオブジェクトを input に変更します。デフォルトは標準入力です。

[PARAM] input:
getc メソッドを持つオブジェクト(IO など)、または nil を指定します。
[EXCEPTION] TypeError:
inputnil でも getc メソッドを持つオブジェクトでもない場合に発生します。
output=(output)Ruby 2.7 から[permalink][rdoc][edit]

Reline が表示に使うオブジェクトを output に変更します。デフォルトは標準出力です。

[PARAM] output:
write メソッドを持つオブジェクト(IO など)、または nil を指定します。
[EXCEPTION] TypeError:
outputnil でも write メソッドを持つオブジェクトでもない場合に発生します。
output_modifier_proc -> Proc | nilRuby 2.7 から[permalink][rdoc][edit]
output_modifier_proc=(proc)

入力内容を表示する直前に、表示用に加工する Proc オブジェクトを取得/設定します。シンタックスハイライトなどに利用できます。デフォルトは nil です。

proc は、第 1 引数に入力内容全体の文字列(末尾に改行を含む)を、キーワード引数 complete に入力が確定したかどうかの真偽値を受け取り、表示に使う文字列を返すようにします。返した文字列は表示にだけ使われ、Reline.readline などの返り値は変わりません。

[PARAM] proc:
表示用の文字列を返す Proc オブジェクト、または nil を指定します。
pre_input_hook -> Proc | nilRuby 2.7 から[permalink][rdoc][edit]
pre_input_hook=(proc)

Reline.readlineReline.readmultiline が入力の受け付けを始める直前に呼ばれる Proc オブジェクトを取得/設定します。proc は引数なしで呼ばれます。デフォルトは nil です。

[PARAM] proc:
Proc オブジェクト、または nil を指定します。
prompt_proc -> Proc | nilRuby 2.7 から[permalink][rdoc][edit]
prompt_proc=(proc)

Reline.readmultiline での複数行編集時に、行ごとのプロンプトを動的に生成する Proc オブジェクトを取得/設定します。デフォルトは nil です。

proc は、入力中の各行の文字列を要素とする配列を受け取り、行ごとのプロンプト文字列の配列を返すようにします。Reline.readline による一行入力では使われません。

[PARAM] proc:
プロンプトの配列を返す Proc オブジェクト、または nil を指定します。
readline(prompt = "", add_hist = false) -> String | nilRuby 2.7 から[permalink][rdoc][edit]

prompt を出力し、ユーザからのキー入力を待ちます。エンターキーの押下などでユーザが文字列を入力し終えると、入力した文字列を返します。返り値の末尾に改行は含まれません。このとき、add_hist が真であれば、入力した文字列を入力履歴 Reline::HISTORY に追加します。空の入力は追加されません。何も入力していない状態で EOF(UNIX では ^D)を入力するなどで、ユーザからの入力がない場合は nil を返します。

[PARAM] prompt:
カーソルの前に表示する文字列を指定します。デフォルトは "" です。
[PARAM] add_hist:
真ならば、入力した文字列を入力履歴に追加します。デフォルトは偽です。
require 'reline'

while buf = Reline.readline("> ", true)
  print("-> ", buf, "\n")
end
readmultiline(prompt = "", add_hist = false) { |text| ... } -> String | nilRuby 2.7 から[permalink][rdoc][edit]

prompt を出力し、ユーザからの複数行の入力を待ちます。

一行の入力が確定するたびに、それまでに入力された全体の文字列 text を引数としてブロックが呼ばれます。ブロックが真を返すと入力を終了し、入力された複数行全体をひとつの文字列(各行を "\n" で連結したもの)として返します。返り値の末尾に改行は含まれません。

add_hist が真であれば、入力した複数行全体をひとつのエントリとして入力履歴 Reline::HISTORY に追加します。空の入力は追加されません。

何も入力していない状態で EOF(UNIX では ^D)を入力するなどで、ユーザからの入力がない場合は nil を返します。

[PARAM] prompt:
カーソルの前に表示する文字列を指定します。デフォルトは "" です。
[PARAM] add_hist:
真ならば、入力した文字列を入力履歴に追加します。デフォルトは偽です。
[EXCEPTION] ArgumentError:
ブロックを省略した場合に発生します。
例: 「end」だけの行が入力されたら入力を終了する
require 'reline'

code = Reline.readmultiline("> ", true) { |text| text.split("\n").last == "end" }
puts code
special_prefixes -> StringRuby 2.7 から[permalink][rdoc][edit]
special_prefixes=(string)

補完対象の単語の一部として扱う接頭辞の文字の集合を取得/設定します。デフォルトは "" です。

設定値は保持されますが、現在の reline の補完処理では使用されません。

[PARAM] string:
文字列を指定します。
vi_editing_mode -> nilRuby 2.7 から[permalink][rdoc][edit]

編集モードを vi モードにします。

inputrc の set editing-mode vi でも設定できます。

[SEE_ALSO] Reline.emacs_editing_modeReline.vi_editing_mode?

vi_editing_mode? -> boolRuby 2.7 から[permalink][rdoc][edit]

編集モードが vi モードかどうかを返します。

[SEE_ALSO] Reline.vi_editing_mode