AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 554478
Accepted
Nathaniel M. Beaver
Nathaniel M. Beaver
Asked: 2019-11-28 09:45:33 +0800 CST2019-11-28 09:45:33 +0800 CST 2019-11-28 09:45:33 +0800 CST

Por que Esc-[ rola para a esquerda em `less`?

  • 772

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 ~/.lesskeyfunçõ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?

keyboard-shortcuts escape-characters
  • 1 1 respostas
  • 173 Views

1 respostas

  • Voted
  1. Best Answer
    Stéphane Chazelas
    2019-11-28T12:45:48+08:002019-11-28T12:45:48+08:00

    É 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 em less.

    Então, quando lessrecebe um ESC [, ele está esperando por mais (sem tempo limite como alguns outros aplicativos fazem).

    No meu terminal ESC[6~é PageDown. Se eu pressionar Alt+[, vejo ESC [como você. Mas então eu posso entrar 6e ~isso rola para baixo.

    Se você executar TERM=vt100 lessem vez de less, onde a vt100página terminfo não possui nenhuma entrada para Homeou End... você verá ESC [funciona.

    Se, no entanto, você adicionar \e[ left-scrollao seu ~/.lesskey(e executar lesskeypara compilá-lo em ~/.less), você notará os ESC [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 ~/.lesstabela 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-scrollfor 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 e lessaguardará 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.

    • 3

relate perguntas

  • Como parar de gravar com o Kazam

  • Vincule CAPS+hjkl às teclas de seta; CAPS para ESC

  • Comando de atalho do sono lubuntu?

  • A maneira mais fácil de limpar o buffer de rolagem do terminal + alguma explicação mais profunda?

  • Excluir até o final da linha de comando no Vim

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve