
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-history
y up-line-or-history
( down-history
y down-line-or-history
para desplazarse hacia abajo).
De forma predeterminada, up-line-or-history
deberí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 2A
for 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-history
widged:
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 zsh
otra 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.