# REPL

`ptool repl` は、標準の `ptool` API がすでに読み込まれた状態で対話型の Lua セッションを開始します。

## REPL を開始する

```sh
ptool repl
```

REPL が起動すると、`ptool` はバナーを表示し、Lua 入力を待ち受けます。

## 提供されるもの

- グローバルテーブル `ptool` と短い別名 `p`。
- `ptool run <file>` から使えるものと同じ組み込みヘルパー。
- Lua の式や文の対話的な評価。
- 矢印キーによるカーソル移動やセッション内履歴の移動を含む、 readline 風の編集機能。

## 基本的な使い方

式を入力するとすぐに評価されます。

```lua
1 + 2
```

REPL は `ptool` の他の場所でも使われている同じインスペクターで戻り値を 表示します。

`ptool` API を直接呼び出すこともできます。

```lua
p.str.trim("  hello  ")
```

## 複数行入力

現在の入力が未完成の場合、プロンプトは `>>> ` から `... ` に変わります。 これにより、関数や制御フロー文のようなブロックを続けて入力できます。

```lua
for i = 1, 3 do
  print(i)
end
```

入力が完成すると、`ptool` はそのチャンク全体を評価します。

## キーボード操作

- `Up` と `Down` は、同じ REPL セッション内で以前に入力したコマンドを たどります。
- `Left` と `Right` は、現在の入力行の中でカーソルを移動します。
- `Ctrl-C` は現在の入力を消去します。複数行チャンクの途中なら、 バッファされたチャンクを破棄して通常のプロンプトに戻ります。
- `Ctrl-D` は REPL を終了します。

## 注意

- `ptool repl` には対話型 TTY が必要です。
- REPL の履歴は現在のところそのセッション内だけに存在し、 履歴ファイルには書き込まれません。
