En los navegadores web modernos y otro software con contenido de texto, se Spacedesplaza hacia abajo más o menos una pantalla completa. ShiftSpacese desplaza hacia arriba en todo menos less
.
¿Cómo se puede usar ShiftSpacepara desplazarse hacia arriba less
? O, alternativamente, ¿hay otro buscapersonas (la compatibilidad POSIX es mi único requisito) que podría hacer el trabajo?
Me dijeron que algunos emuladores de terminal y algunas bibliotecas de interfaz de usuario de terminal (ncurses?) No lo reconocen ShiftSpace. ¿Es eso un problema válido?
less
distinguir entre Space y Shift-Space.b
o^B
(0x2) sobre<shift-Space>
. Tenga en cuenta queb
está justo encima de la barra espaciadora en muchas configuraciones de teclado/
adoptar universalmente como "texto de búsqueda" varias herramientas comunes, pero al mismo tiempo desconfío de imponer estándares meglomaníacos excesivos que hacen que sea aún más fácil hacer algo que se puede hacer con una tecla (universalmente reconocible) de todos modos. Es interesante saber que, en este caso, es una limitación técnica (ver la respuesta de 200_success) y no un diseño curmudgeonly que explica.translations
recurso para el widget VT100.Respuestas:
Creo que has mencionado un choque cultural causado por una limitación técnica. Como Shift+ Spacegenera la misma salida que Space, el modelo de terminal Unix los trata de manera idéntica. Para distinguir entre los dos, necesita un entorno de programación que admita eventos de tecla arriba / abajo. Eso es posible en X11 y en emuladores de terminal que admiten la reasignación de claves. Un ejemplo de reasignación Shift+ Spacea PageUp:
fuente
xterm -xrm 'XTerm.VT100.translations: #override Shift <KeyPress> space: string(0x2)'
en xterm, por ejemplo, o envía la misma secuencia que la enviada<PageUp>
). Por supuesto, eso haría que ingresar texto mientras se mantiene presionada la tecla Mayús.En los emuladores de terminal, esta característica interrumpiría la escritura de texto en mayúscula con espacios incrustados al mantener presionada la tecla Mayús. Por ejemplo, si quisiera escribir "It's A Title", tendría que soltar Shift entre "A" y "T". Mantenerlo presionado alejaría su cursor y colocaría mal el resto de lo que escribe. Creo que sería mucho más molesto de lo que obtienes con la función de desplazamiento hacia arriba.
Tener el comportamiento regular al escribir texto y desplazarse hacia arriba cada vez que Space se desplaza hacia abajo requeriría un rediseño y una gran cooperación de las aplicaciones (por ejemplo, una aplicación que pueda alternar lo que Shift + Space envía), estoy bastante seguro de que no va a suceder.
La diferencia clave es que una aplicación GUI conoce el "contexto" si está editando o viendo contenido, los emuladores de terminal no tienen forma de saberlo.
fuente
Los emuladores de terminal envían el mismo carácter sobre Spacey Shift+Space. Si no lo hicieran, sería incómodo escribir texto mientras se mantiene presionada la Shifttecla (ver la respuesta de @ egmont que se expande en ese argumento).
Sin embargo, podría solucionarlo mediante la asignación Shift+Spacea una secuencia de caracteres que terminaría insertando un espacio de forma predeterminada, y para el cual podría configurar aplicaciones como
less
desplazarse hacia arriba al presionar dicha tecla.Por ejemplo, tal secuencia podría ser
`
DEL
SPC
(cambiarDEL
aBS
en sistemas donde BS es elerase
personaje).Para
xterm
, agregue el recurso:Y configurar
less
con:fuente
less
actualmente no es compatible con esto, pero definitivamente podría agregarse .Si un programa usa una secuencia de control xterm para establecer
modifyOtherKeys
2 escribiendo\e[>4;2m
al terminal, luegoxterm
anota las teclas con información adicional sobre qué teclas modificadoras están activas. Específicamente para la Spaceclave, conmodifyOtherKeys
activo en xterm, Shift+ se Spaceconvierte en\e[27;2;32~
.less
tendría que interpretar esto correctamente como Shift+ Spacey luego activar un desplazamiento hacia arriba.Si bien esto definitivamente funcionaría en xterm, no funcionaría en todas las aplicaciones de terminal. Pero aquellos terminales que no reconocen esta secuencia de escape para activar
modifyOtherKeys
simplemente ignorarán esa secuencia de escape y seguirán enviando a los programas un carácter de espacio normal cuando presione Shift+ Space.Hay una página bastante detallada en el sitio web de xterm que explica cómo
modifyOtherKeys
se calculan los códigos: https://invisible-island.net/xterm/modified-keys.htmlfuente