¿Cómo puedo desplazarme hacia arriba una línea en zsh?

¿Cómo puedo desplazarme hacia arriba una línea en zsh?

Estoy usando iTerm2 con bash y me desplazo una línea hacia arriba a través del búfer de historial escribiendo Shift+Up. Cuando cambio a mi shell zsh, simplemente ingresa 2A. ¿Cómo puedo desplazarme hacia arriba en una sola línea en zsh con solo mi teclado, preferiblemente usando Shift+Up?

Respuesta1

Creo que depende del emulador de terminal.

Por ejemplo, conzsh, en konsole funciona Shift+ Up.
En xterm no, pero funciona Shift+ PgUp.

Parece que con iTerm2 debería funcionar de forma predeterminada:

  • mover una línea hacia arriba
  • para mover una línea hacia abajo

Respuesta2

La función que busca la proporcionan los widgets up-historyy up-line-or-history( down-historyy down-line-or-historypara desplazarse hacia abajo).

De forma predeterminada, up-line-or-historydebería estar vinculado, Uppero puede vincularlo a (casi) cualquier otra secuencia de teclas con bindkey. En las terminales, las claves especiales (claves que no generan un carácter imprimible) generan una secuencia de claves que luego es interpretada por el shell, o no, como muestra su ejemplo de 2Afor Shift+ Up. Estas secuencias de teclas también pueden diferir entre emuladores de terminal. Para obtener la secuencia de teclas correcta para su terminal, ábralo, luego presione Ctrl+ vseguido de la combinación de teclas que desee ( Shift+ Up). En mi terminal (rxvt-unicode) obtengo ^[[a. Luego puedes vincular la secuencia al up-historywidged:

bindkey <in-string> up-history

Simplemente reemplácelo <in-string>con la secuencia encontrada. En mi caso

bindkey '^[[a' up-history

Nota 1:Lo más probable es que necesites poner la secuencia entre comillas, ya que probablemente contendrá caracteres que serán interpretados de zshotra manera.

Nota 2:Algunas combinaciones de teclas pueden generar secuencias de teclas idénticas. Por ejemplo, las letras combinadas con Ctrl+ Shiftgeneralmente no difieren de las mismas letras combinadas solo con Ctrl. Ambos, Ctrl+ Shift+ ay Ctrl+ asuelen producir ^A. En algunos emuladores de terminal Ctrl+ Shiftcombinaciones incluso se utilizan para accesos directos del propio terminal y no están disponibles en el shell.

información relacionada