De acordo com a página de manual para lesskey
, as seguintes chaves estão vinculadas à rolagem à esquerda e à rolagem à direita:
\e[ left-scroll
\e] right-scroll
\e( left-scroll
\e) right-scroll
\kl left-scroll
\kr right-scroll
As teclas de seta e Esc-(
/ Esc -)
funcionam bem, assim como Esc-]
para rolar para a direita, mas Esc-[
não para rolar para a esquerda. Em vez disso, apenas mostra isso no prompt da linha de comando:
ESC[
Adicionando esta linha às ~/.lesskey
funções como uma solução alternativa:
\e[ left-scroll
Mas por que não funciona por padrão?
Eu observei esse comportamento no XFCE4 no trecho Debian, bem como no Kubuntu 18.04, bem como em uma variedade de emuladores de terminal.
$ less --version
less 487 (GNU regular expressions)
Copyright (C) 1984-2016 Mark Nudelman
less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less
Eu considerei enviar um relatório de bug, mas a lista de bugs conhecidos e solicitações de recursos sugere que é um comportamento conhecido:
Solicitações de aprimoramento
[. . . ]
Número de referência: 175
Implementado na versão: 322
Adicionar comando alternativo para ESC-[.
Isso é realmente uma limitação no less
, ou é uma peculiaridade em como os terminais lidam com a tecla Escape?
É porque
ESC [
também passa a ser o início da sequência de caracteres enviada por várias teclas de função em alguns terminais, como Homeou Endou PageUp... Essas também estão vinculadas a alguma ação emless
.Então, quando
less
recebe umESC [
, ele está esperando por mais (sem tempo limite como alguns outros aplicativos fazem).No meu terminal
ESC[6~
é PageDown. Se eu pressionar Alt+[, vejoESC [
como você. Mas então eu posso entrar6
e~
isso rola para baixo.Se você executar
TERM=vt100 less
em vez deless
, onde avt100
página terminfo não possui nenhuma entrada para Homeou End... você veráESC [
funciona.Se, no entanto, você adicionar
\e[ left-scroll
ao seu~/.lesskey
(e executarlesskey
para compilá-lo em~/.less
), você notará osESC [
trabalhos para rolar para a esquerda, mas todos os Home, PageUP... param de funcionar, todos eles rolam para a esquerda e os caracteres extras que enviam causam alguns bipes.Olhando para o código, é tudo sobre a ordem em que a tabela de comandos é processada. A
~/.less
tabela de comandos é adicionada por último , mas inserida no cabeçalho , então suas entradas são processadas antes das internas.Em uma
ESC [
entrada, se a entrada for\e[ left-scroll
for encontrada primeiro, ela será processada, se for\kD forw-screen
(que em muitos terminais se traduz em\e[6~ forw-screen
) for encontrada primeiro, então será apenas uma correspondência de prefixo eless
aguardará mais entrada .Então, é uma espécie de bug. A correção seria adicionar um tempo limite. No entanto, adicionar um tempo limite curto significaria desistir de comandos de várias teclas; um tempo limite longo para dar tempo suficiente para um usuário inserir um comando de várias teclas provavelmente
ESC [
não responderia.Agora, os terminais que têm PageUp, etc, geralmente também têm uma chave Leftque Righttambém está vinculada a
left-scroll
,right-scroll
, então você pode querer usar isso para rolar.