Skip to content

原文(日本語訳)

複数行および折り返しテキスト入力において、上下矢印キーが履歴ナビゲーションよりもカーソル移動を優先するようになりました

原文(英語)

Fixed up/down arrow keys in multi-line and wrapped text input to prioritize cursor movement over history navigation

概要

複数行にわたる入力や、長いテキストが折り返されている場合、上下矢印キーがコマンド履歴ではなくカーソル移動を優先するようになりました。これにより、長いプロンプトの編集がより直感的になります。

問題の背景

修正前の問題

  • 複数行入力中に上下矢印キーを押すと、意図せずコマンド履歴が表示された
  • 長いテキストが折り返されている場合、行内の移動ができなかった
  • 編集中のテキスト内を自由に移動できず、使いにくかった

修正後

  • カーソルがまだ移動できる場合は、行間移動が優先される
  • カーソルが最初の行または最後の行にあり、それ以上移動できない場合のみ履歴ナビゲーションになる
  • より自然で直感的な編集体験

基本的な使い方

複数行のプロンプトを入力する際、上下矢印キーで自由に行間を移動できます。

bash
claude
> 長いプロンプトを入力
> 複数行にわたって
> 詳細な指示を書く
# ↑↓ キーで各行間を移動できる

実践例

複数行プロンプトの編集

bash
claude
> 以下の要件でコンポーネントを作成してください:
> 1. TypeScript を使用
> 2. Props の型定義を含める
> 3. エラーハンドリングを実装

# カーソルが3行目にある状態で ↑ を押す
# → 2行目に移動(履歴ではない)

# さらに ↑ を押す
# → 1行目に移動

# 1行目で ↑ を押す
# → 前のコマンド履歴が表示される(これ以上上に移動できないため)

長いテキストの折り返し編集

bash
claude
> この非常に長いプロンプトはターミナルの幅を超えて折り返され、複数行に表示されますが、実際には1行の入力です

# 折り返された部分でも ↑↓ で移動できる
# ↑ = 上の折り返し行へ移動
# ↓ = 下の折り返し行へ移動

# 最上部で ↑ = 履歴へ
# 最下部で ↓ = 履歴へ(次のコマンド)

Shift+Enter での複数行入力

bash
claude
> 最初の行を入力
[Shift+Enter]
> 2行目を入力
[Shift+Enter]
> 3行目を入力

# ↑↓ で各行を自由に移動して編集
# 1行目に戻って修正も簡単

コードブロックの編集

bash
claude
> 以下のコードをリファクタリングして:
[Shift+Enter]
> ```javascript
[Shift+Enter]
> function example() {
[Shift+Enter]
>   return 'test';
[Shift+Enter]
> }
[Shift+Enter]
> ```

# コードブロック内を ↑↓ で移動して編集
# function の行に戻って変更、など

箇条書きリストの編集

bash
claude
> タスクリスト:
[Shift+Enter]
> - ユーザー認証機能の実装
[Shift+Enter]
> - データベーススキーマの設計
[Shift+Enter]
> - API エンドポイントの作成
[Shift+Enter]
> - テストの追加

# ↑ で上の項目に戻って編集
# 順序を変更したり、内容を修正したり

カーソル移動の優先順位

優先順位1: 行内移動

bash
# カーソルが行の途中にある場合
> テキスト|入力中
# ↑↓ = 前後の行へ移動

優先順位2: 履歴ナビゲーション

bash
# カーソルが最初の行にある場合
> |最初の行
# ↑ = 前のコマンド履歴

# カーソルが最後の行にある場合
> 最後の行|
# ↓ = 次のコマンド履歴

他のナビゲーション方法との組み合わせ

左右矢印キー

bash
# ← → で左右に移動(従来通り)
> テキスト|入力
# ← で左へ、→ で右へ

Home/End キー

bash
# Home = 行の先頭へ
# End = 行の末尾へ
> テキスト入力中
[Home] → |テキスト入力中
[End]  → テキスト入力中|

Ctrl+A / Ctrl+E

bash
# Ctrl+A = 行の先頭へ(Emacs スタイル)
# Ctrl+E = 行の末尾へ(Emacs スタイル)

Option/Alt + 矢印(単語移動)

bash
# Option+← = 前の単語へ
# Option+→ = 次の単語へ
> これは テスト メッセージ|です
[Option+←] → これは テスト |メッセージです

Vim モードでの動作

bash
# Vim モードでも同様に動作
claude
> /vim

# ノーマルモードで
> 複数行の
> テキスト入力

# j = 下へ移動
# k = 上へ移動
# gg = 最初の行へ
# G = 最後の行へ

注意点

  • 折り返し検出: ターミナルの幅によって折り返し位置が変わります
  • ターミナルの対応: 一部の古いターミナルでは正しく動作しない場合があります
  • Vim モード: Vim モードでは別の動作ルールが適用されます(j/k キーなど)

履歴ナビゲーションへのアクセス

複数行編集中でも、履歴にアクセスしたい場合:

方法1: カーソルを端に移動

bash
# 最初の行の先頭に移動してから ↑
[Ctrl+A] を押して行頭へ
# さらに何度か ↑ を押して最初の行へ
# 最初の行で ↑ → 履歴が表示される

方法2: Ctrl+R で検索

bash
# 履歴検索を使用(どの位置からでもアクセス可能)
[Ctrl+R]
# 検索語を入力

方法3: /resume コマンド

bash
# 過去のセッションを再開
> /resume

トラブルシューティング

矢印キーが期待通りに動作しない

bash
# 1. ターミナルの互換性を確認
# iTerm2, WezTerm, Kitty などの最新ターミナル推奨

# 2. ターミナルモードの確認
# Kitty keyboard protocol が有効になっているか確認

# 3. Vim モードの確認
# Vim モードが有効な場合は j/k を使用
> /vim

関連機能

外部エディタ(Ctrl+G)

bash
# 複雑な複数行編集は外部エディタで
[Ctrl+G]
# エディタで編集して保存

プロンプトのやり直し

bash
# Ctrl+U = 現在の行をクリア
# Ctrl+_ = 入力を取り消し(アンドゥ)

関連情報