¿Qué es '"^[b" palabra invertida' al intentar configurar ZSH?

¿Qué es '"^[b" palabra invertida' al intentar configurar ZSH?

Estoy en una MAC y estoy tratando de encontrar atajos para mi ZSH ejecutándose en Iterm2.

Cuando escribo bindkey en el shell, veo (entre otras asignaciones) lo siguiente:

"^[b" backward-word
"^[f" forward-word

Lo sé ^ es la tecla Control. Pero, ¿qué pasa si presiono Ctrl + [ + f? No avanza ni una palabra.

¿Qué me estoy perdiendo?

Respuesta1

^suele ser control, pero ^[en realidad significa Escape o Alt (o meta, si te gusta emacs).

Entonces puedes presionar Escbo Escfpara esas combinaciones de teclas.

De forma predeterminada, Alt no funciona en terminales Mac, pero iTerm2 tiene una configuración: "La opción actúa como [ ] Normal [ ] Meta [ ] +Esc". Quieres +Esc.

Captura de pantalla de la configuración de la tecla de opción iTerm2.

Respuesta2

En realidad ^[es la tecla Alt. Entonces, en su caso, la terminal (Iterm2) usa Alt + b y Alt + f para avanzar y retroceder una palabra. Esto está controlado por su terminal y no tiene nada que ver con zsh.

Respuesta3

Extendermrbrespuesta:

De hecho ^[bes ESC+ bo ( Meta/Alt+ b). Puede mostrar el carácter literalmente procediendo con Ctrl+ v. En este caso encontrarás lo siguiente:

  • Ctrl+ v Ctrl+b

    ^B

  • Ctrl+ v Meta+b

    ^[b

  • Ctrl+v ESC b

    ^[b

Además encontrará en el manual de zsh:

backward-word (ESC-B ESC-b) (unbound) (unbound)
    Move to the beginning of the previous word.

y de manera similar para forward-word:

forward-word (ESC-F ESC-f) (unbound) (unbound)
              Move to the beginning of the next word.

Respuesta4

La ^notación se usa comúnmente en el mundo GNU para caracteres de control, donde ^aes Ctrl-A (ASCII 1 donde A es ASCII 65). En otras palabras, es una abreviatura de "usar el personaje 64 espacios antes de esto".

La ESCclave es ASCII 27, que está 64 pasos antes [, por lo que ^[es una abreviatura de ESC.

En el editor GNU Emacs se utilizaron varias teclas modificadoras, CTRL, META y otras. Por ejemplo, CTRL-f mueve el cursor un carácter hacia adelante y META-f mueve el cursor una palabra hacia adelante.

Para dar cabida a los muchos teclados sin tecla META, se ha adoptado la convención "ESC significa que el siguiente carácter debe considerarse presionado con la tecla META". Por lo tanto, en GNU Emacs, presionar ESC-f mueve el cursor una palabra hacia adelante.

Tenga en cuenta que hoy en día es muy raro que Ctrl-[se le dé un carácter ESC, pero puede estar al acecho en alguna otra combinación Ctrl. Por ejemplo, ^^todavía se usa en sesiones de telnet para escapar al modo comando, por lo que es útil poder encontrarlo.

información relacionada