programacion - manual de android en pdf
Cómo no sobrescribir el contenido de la terminal anterior (1)
El comportamiento que se describe es la pantalla alternativa de estilo xterm. Hay dos casos:
- cuando se usa, el terminal cambia a la pantalla alternativa cuando ejecuta programas de pantalla completa como vim.
- cuando no se utiliza, el terminal continúa en la pantalla normal cuando se ejecutan programas de pantalla completa.
Las pantallas normales / alternativas tienen el mismo tamaño: la parte visible de la terminal ignora el área de desplazamiento. Puede ver la retroalimentación con un mouse. Si lo hace mientras está en la pantalla alternativa, puede ver la desviación adyacente a la pantalla actual (alternativa). Después de volver atrás, p. Ej., Cuando vim sale, las líneas anteriores se muestran a lo largo de la pantalla de desplazamiento y actual (normal). No hay marcador entre los dos.
Algunos aspectos de la pantalla normal / alternativa se discutieron recientemente en ¿Qué mecanismo permite a ViM sobrescribir temporalmente toda la consola?
La mayoría de las aplicaciones en Unix (y Linux y BSD y ...) prestan atención a la variable de entorno TERM
, que ellos (o una biblioteca como ncurses ) utilizan para recuperar información de la base de datos del terminal . En principio, uno puede establecer TERM
por separado para diferentes aplicaciones para obtener un comportamiento diferente (con la advertencia de que algunas aplicaciones como vim tienen tablas incorporadas para "arreglar" la base de datos del terminal que pueden aplicar sin previo aviso). Por ejemplo, al ejecutar en un shell POSIX (o algo así como bash), puede escribir esto para ejecutar vim y menos con dos descripciones de terminal diferentes:
TERM=vt100 vim foo.c
TERM=xterm less foo.c
No estoy seguro de si este es un duplicado, pero no tengo ni idea de qué buscar si lo es, ya que no conozco el nombre de este fenómeno.
Básicamente, cada vez que uso vim
y less
en ciertas computadoras, los contenidos del terminal anterior son sobrescritos por el búfer del archivo actual (creo). Si me desplazo hacia atrás con la barra de desplazamiento, en lugar de los comandos del programa actual, puedo ver el contenido del terminal anterior, pero algunas de las líneas anteriores han sido escritas por el programa actual. Parece que, sin embargo, muchas líneas pasaron por el buffer (creo) de, por ejemplo, vim
, es la cantidad de líneas anteriores de la terminal que se sobrescribieron. Cuando salí de vim
/ less
, esas líneas aún se sobrescribían, aunque aparecen en el historial y cuando presiono up
para ir "atrás" a través del historial.
Sin embargo, en otras computadoras, sucede algo bastante diferente. Mientras estoy usando vim
o less
, si me desplazo hacia arriba y hacia abajo, no puedo ver las líneas anteriores de la terminal. De hecho, en la mayoría de las computadoras donde ocurre este fenómeno, si me desplazo hacia atrás con el mouse, vim
y less
retrocedo a través del archivo en el búfer actual, como si hubiera presionado Ctrl-E
/ Ctrl-Y
. Cuando salgo de vim
/ less
, no veo el archivo en absoluto, solo veo el contenido anterior de la terminal, como en todo lo que estaba haciendo antes de abrir el archivo.
Cada vez que uso more
, no importa qué computadora use, ocurre el fenómeno anterior, pero no uso tanto, ya que me gusta less
en todos los sentidos, así que no he probado sus límites.
Las computadoras / terminales virtuales donde experimenté el fenómeno anterior parecen ser computadoras y / o computadoras más antiguas con capacidades y especificaciones menores, lo cual tiene sentido ya que la mayoría de la gente probablemente querría lo último, pero probablemente sea más difícil de lograr y requiera más potencia de procesamiento y memoria.
Las computadoras con la experiencia anterior fueron: 2 viejos RedHat
en mi trabajo, que probablemente sean de finales de los 2000 / principios de 2010, a los que Penguinet
desde una computadora con Windows 7
con Penguinet
; Teléfonos / tabletas Android
con Terminal Rex IDE donde "instalo el sistema". En la mayoría de Android
aplicaciones de terminal de Android
, no puedo obtener vim
, less
o incluso vi
, aunque obtengo more
. Cuando utilicé vagrant
con Git Bash
, con el valor de TERM
predeterminado de msys
, la terminal estaba completamente desordenada, y experimenté la mayoría del mismo comportamiento, pero peor. Cuando cambié TERM
a cygwin
o xterm
, era mejor.
Las computadoras con el comportamiento más deseado (para mí) fueron: mi computadora portátil más nueva con Ubuntu 15.04
(sí, un cmputer con Linux
preinstalado); cualquier máquina virtual Linux que instalé en mi computadora portátil con Windows 8 en los últimos dos años, pero solo obtuve las versiones más recientes, así que no sé qué tan viejo es el comportamiento; Git Bash
en mi computadora portátil con Windows 8. Git Bash
no retrocedió a través del archivo cuando lo desplacé con el mouse, sino a través de un terminal vacío, pero eso pudo haber sido debido a la configuración en mi vimrc
/ lessrc
. Cuando dejé de fumar en Git Bash
, todavía me mostró todas las líneas anteriores y no el archivo.
La mayoría de estas computadoras usaban bash
, pero todavía experimenté el fenómeno más nuevo cuando instalé y usé fish
en mi computadora ubuntu
más nueva, incluso cuando la convertí en la shell predeterminada, y no creo que Git Bash
sea técnicamente bash
, aunque podría ser. Creo que la aplicación Terminal Rex
usó bash
cuando se instaló en el sistema, pero cuando SHELL
la variable de entorno SHELL
con otras aplicaciones de terminal y con Terminal Rex sin el sistema instalado, informa como sh
.
Estoy interesado en por qué ocurren estos comportamientos, pero estoy más interesado en una forma de cambiarlo por el comportamiento más deseado. ¿Hay alguna manera de hacer que el comportamiento de vim
y less
en las computadoras más antiguas / menos capaces sea más parecido a los comportamientos en las más nuevas? Además, ¿hay alguna manera de hacer que Git Bash
retroceda en el archivo en lugar de en el terminal en blanco?
Bono : ¿Hay alguna manera de hacer que more
comporten más como less
en las computadoras más nuevas? ¿O es solo la diferencia entre more
y less
? Ahora que lo pienso, ¿es posible que less
en las computadoras menos capaces sea en realidad more
?