TL;DR
Ctrl+_(tambiénCtrl+-,Ctrl+Shift+-yCtrl+Shift+_) deshace la última edición del cuadro de texto: hasta cincuenta pasos, uno por cada segundo de pausa, con texto, cursor y pegados. Al enviar se vacía y no hay rehacer. Lo que Claude ya cambió en ficheros o en la conversación es cosa de/rewind.
Vas por la línea doce de un prompt, seleccionas mal, pulsas una tecla y media línea desaparece. En un editor pulsarías deshacer sin pensar. En la terminal, la reacción habitual es resoplar y reescribirla de memoria, porque "deshacer" en Claude Code suena a /rewind, y /rewind es otra cosa.
El cuadro de texto tiene su propio deshacer. Está en la ayuda del prompt (la que abres con ?), listado como undo, y en una fila de la tabla de atajos de la doc, sin más explicación.
Resultado (ilustrativo, el cursor es ▮):
> revisa el login y comprueba que el refresh token caduca a los 15 min▮
...seleccionas mal y sobreescribes...
> revisa el login y c▮
Ctrl+_
> revisa el login y comprueba que el refresh token caduca a los 15 min▮
Cómo funciona
1. Guarda instantáneas mientras escribes. Cada cambio en el cuadro de texto entra en un buffer de cincuenta estados. Cada estado lleva el texto, la posición del cursor y el contenido pegado, así que al retroceder vuelve también la imagen que hubieras pegado. Con cincuenta y uno, el más antiguo se cae.
2. Con un segundo de gracia. No guarda cada tecla: agrupa lo que escribes seguido y toma la instantánea cuando llevas un segundo sin tocar nada. Por eso un Ctrl+_ te devuelve una palabra o una frase, no una letra. La excepción es el modo vim: fuera de INSERT, cada operación se guarda al instante.
3. Retrocede, no avanza. Cada pulsación vuelve un estado atrás. No hay rehacer: si te pasas, lo que hay es volver a escribirlo.
4. Se vacía al enviar. El buffer vive lo que vive el borrador. En cuanto pulsas Enter, o un slash command termina, se limpia. Y no sobrevive a la sesión.
Las cuatro combinaciones
El binario lleva cuatro atajos apuntando a la misma acción, chat:undo:
ctrl+_ ctrl+- ctrl+shift+- ctrl+shift+_
La doc lista dos. Los otros dos existen porque cada terminal manda una secuencia distinta para la misma tecla física: en unos Ctrl más el guion sale como ctrl+-, en otros como ctrl+_. La ayuda te enseña una sola, la que tengas asignada, aunque las cuatro funcionen. Si no te responde ninguna, es tu terminal la que se la queda; se ve con /keybindings y se remapea ahí:
{
"bindings": [
{ "context": "Chat", "bindings": { "alt+u": "chat:undo" } }
]
}
Lo que no conviene es ponerlo en Ctrl+Z, que es lo que pide la mano: en Unix suspende el proceso, y la doc lo lista entre los atajos que chocan con la terminal. Y si eliges una con Alt en macOS, tu terminal tiene que mandar Option como Meta.
Cuatro teclas que se parecen y no son lo mismo
| Quieres | Tecla | Qué toca |
|---|---|---|
| Deshacer lo último que tecleaste | Ctrl+_ |
El cuadro de texto, un paso atrás |
| Vaciar el cuadro y recuperarlo con la flecha arriba | Esc Esc |
El cuadro de texto, entero, al historial |
| Aparcar el borrador y preguntar otra cosa | Ctrl+S |
El cuadro de texto, a un hueco aparte |
| Deshacer lo que Claude cambió | /rewind |
Ficheros y conversación, por checkpoint |
Las tres primeras no tocan ni un fichero. La cuarta no toca el cuadro de texto. Esc Esc manda el borrador entero al historial y pierdes el sitio del cursor; Ctrl+S lo aparca en un hueco y te lo devuelve al enviar el siguiente. Ctrl+_ es el único que vuelve un paso, no todos. Y /rewind es el que sale cuando buscas "claude code undo": deshace lo que hizo Claude, y no sabe nada de lo que tú estabas escribiendo.
Documentación oficial: Interactive mode: keyboard shortcuts · Keybindings
Requisitos
- Comprobado en Claude Code v2.1.258. El buffer de cincuenta y el segundo de debounce salen del propio binario; la doc solo dice que restaura texto y cursor.