Skip to content

原文(日本語に翻訳)

Vimモードのundoを修正しました: u キーが、短時間に続けて入力したNORMAL/VISUALモードのコマンドをまとめて1つのundo操作にしてしまっていた問題を解消し、1操作ずつステップ実行するようになりました。

原文(英語)

Fixed vim mode undo: u now steps through NORMAL/VISUAL-mode commands one at a time instead of merging commands in quick succession into a single undo step

概要

Claude CodeのVimモード(/vim で有効化)において、u キーによるundo動作の問題が修正されました。以前は素早く連続して実行したコマンドが1つのundo操作にまとめられてしまい、意図した場所まで戻れないことがありました。修正後は各コマンドを個別にundoできます。

基本的な使い方

Vimモードの有効化:

bash
# セッション内で有効化
/vim

# または settings.json で常時有効化
{
  "vimMode": true
}

修正後のundo動作:

  • u → 直前の1コマンドのみ取り消す
  • u を繰り返すと → コマンドを1つずつ遡る
  • Ctrl+R → redo(取り消しを元に戻す)

実践例

連続コマンドでのundo動作の改善

入力履歴の例:

1. w → 次の単語へ移動
2. dw → 単語を削除
3. p → 貼り付け
4. dd → 行を削除

修正前の動作(問題あり):

u → 1〜4をまとめてundo(意図しない場合が多い)

修正後の動作(正確):

u → dd を取り消す(行を復元)
u → p を取り消す(貼り付けを取り消す)
u → dw を取り消す(単語を復元)
u → w の移動は元に戻せない(移動は取り消し対象外)

テキスト編集でのundo活用

# プロンプト編集中(VIMモード)
i  → INSERT モードに入る
"この関数は" と入力
ESC → NORMAL モードに戻る
A  → 末尾にカーソルを移動
" 重要です" と追加入力
ESC

# 末尾の追記だけを取り消したい場合
u → "重要です" の追加を取り消す(修正後は正確に動作)

# さらに戻りたい場合
u → "この関数は" の入力を取り消す

VISUALモードでの範囲選択undo

v → VISUAL モード開始
3j → 3行選択
d → 選択範囲を削除

# その後
u → 削除をundo(正確に1ステップ戻る)

注意点

  • この修正はVimモードが有効な場合のみ関係します(デフォルトモードには影響なし)
  • 「短時間に連続したコマンド」の定義は内部のタイムアウトに基づいています。2.1.178以降はタイムアウトの代わりに各コマンドを個別に管理します
  • テキスト移動コマンド(w, b, e, h, j, k, l など)はundoの対象外です(テキスト変更コマンドのみundo可能)
  • Ctrl+R(redo)も同様に1ステップずつ動作します

関連情報