studio programacion herramientas fundamentos con avanzado aplicaciones android linux shell pagination git-bash

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 ?