Shift-Space em menos

5

Em navegadores modernos e outros softwares com conteúdo de texto, Space rola para baixo mais ou menos uma tela cheia. Shift Espaço rola para cima em tudo menos em less .

Como alguém pode usar Shift Espaço para rolar para cima em less ? Ou, alternativamente, existe outro pager (compatibilidade POSIX é meu único requisito) que poderia fazer o trabalho?

Me disseram alguns emuladores de terminal, e algumas bibliotecas de UI de terminal (ncurses?), não reconhecem Shift Espaço . Esse é um problema válido?

    
por Orpheus 28.08.2013 / 20:44

4 respostas

6

Acho que você mencionou um choque cultural causado por uma limitação técnica. Uma vez que Shift + Espaço gera a mesma saída que Espaço , o modelo de terminal Unix trata-os de forma idêntica. Para distinguir entre os dois, você precisa de um ambiente de programação que suporte eventos de ativação / desativação de chaves. Isso é possível no X11 e em emuladores de terminal que suportam o remapeamento de chaves. Um exemplo de remapeamento Shift + Espaço para PageUp :

# For [u]rxvt, in ~/.Xdefaults:
URxvt.keysym.Shift-space: 3[5~
    
por 28.08.2013 / 21:39
1

Eu nunca ouvi falar de usar shift-space.

Menos rolará para cima uma linha de cada vez com a tecla 'k' e uma página com a tecla 'b' ou a combinação de teclas 'ctrl-b'. O page-up também funciona, mas isso não é 100% confiável, especialmente quando se trabalha com conexões de rede lentas.

Para voltar mais de uma linha por vez com 'k', digite primeiro um número - como este "10k" para subir 10 linhas de uma só vez.

    
por 28.08.2013 / 20:50
1

Em emuladores de terminal, esse recurso quebraria a digitação de texto em maiúsculas com espaços incorporados, mantendo pressionada a tecla Shift. Por exemplo. Se você quisesse digitar "It's A Title", teria que liberar o Shift entre "A" e "T". Mantê-lo pressionado iria afastar o cursor e equivocar o resto do que você digita. Eu acredito que seria muito mais irritante do que o que você ganha com o recurso de rolagem.

Ter o comportamento regular ao digitar texto e rolar para cima sempre que o Espaço rolar para baixo exigiria um redesenho e cooperação pesada de aplicativos (por exemplo, um aplicativo sendo capaz de alternar o que Shift + Espaço envia), tenho certeza de que acontecer.

A principal diferença é que um aplicativo GUI conhece o "contexto" quer você esteja editando ou visualizando conteúdo, os emuladores de terminal não têm como saber isso.

    
por 03.11.2016 / 10:22
0

Emuladores de terminal enviam o mesmo caractere em Espaço e Shift + Espaço . Se não o fizessem, então tornaria difícil digitar o texto mantendo pressionada a tecla Shift (veja @ resposta do egmont que se expande esse argumento).

No entanto, você poderia contornar isso mapeando Shift + Space para uma sequência de caracteres que acabaria inserindo um espaço por padrão e para o qual você poderia configurar aplicativos como less para rolar em cima de tal tecla.

Por exemplo, essa sequência pode ser ' DEL SPC (altere o DEL para BS em sistemas em que BS é o caractere erase ).

Para xterm , adicione o recurso:

XTerm.VT100.translations: #override \
  Shift <KeyPress> space: string("'") string(0x7f) string(" ") 

E configure less com:

printf '%s\n' '#command' ''7 back-screen' | lesskey -
    
por 03.11.2016 / 10:54