![Como posso rolar uma linha para cima no zsh?](https://rvso.com/image/1475787/Como%20posso%20rolar%20uma%20linha%20para%20cima%20no%20zsh%3F.png)
Estou usando o iTerm2 com bash e percorro o buffer de histórico uma linha digitando Shift+Up
. Quando mudo para meu shell zsh, ele apenas insere 2A
. Como posso rolar para cima uma única linha no zsh com apenas o teclado, de preferência usando Shift+Up
?
Responder1
Acho que depende do emulador de terminal.
Por exemplo, comzsh, no konsole funciona Shift+ Up.
No xterm não, mas funciona Shift+ PgUp.
Parece que com o iTerm2 deve funcionar por padrão:
- ⌘ ↑mover uma linha para cima
- ⌘ ↓mover uma linha para baixo
Responder2
A função que você procura é fornecida pelos widgets up-history
e up-line-or-history
( down-history
e down-line-or-history
para rolar para baixo).
Por padrão, up-line-or-history
deve estar vinculado, Upmas você pode vinculá-lo a (quase) qualquer outra sequência de teclas com bindkey
. Nos terminais, chaves especiais (chaves que não geram um caractere imprimível) geram uma sequência de chaves que é então interpretada pelo shell - ou não, como mostra seu exemplo 2A
for Shift+ Up. Essas sequências de teclas também podem diferir entre emuladores de terminal. Para obter a sequência de teclas correta para o seu terminal, abra-o e pressione Ctrl+ vseguido da combinação de teclas desejada ( Shift+ Up). No meu terminal (rxvt-unicode) recebo ^[[a
. Você pode então vincular a sequência ao up-history
widget:
bindkey <in-string> up-history
Basta substituir <in-string>
pela sequência encontrada. No meu caso
bindkey '^[[a' up-history
Nota 1:Você provavelmente precisará colocar a sequência entre aspas, pois provavelmente conterá caracteres que serão interpretados de zsh
outra forma.
Nota 2:Algumas combinações de teclas podem gerar sequências de teclas idênticas. Por exemplo, letras combinadas com Ctrl+ Shiftgeralmente não diferem das mesmas letras combinadas apenas com Ctrl. Ambos, Ctrl+ Shift+ ae Ctrl+ ageralmente produzem ^A
. Em alguns emuladores de terminal Ctrl+ Shiftcombinações são usadas até para atalhos do próprio terminal e não estão disponíveis no shell.