Usando la rueda de desplazamiento en la pantalla GNU

254

¿Cómo puedo configurar la pantalla GNU para permitir que la rueda de desplazamiento del mouse se desplace en el búfer de desplazamiento hacia atrás? Traté de buscar en Google sobre esto, pero la mayoría de los éxitos fueron sobre cómo permitir que las aplicaciones dentro de la pantalla usen la rueda de desplazamiento.

JesperE
fuente
JesperE - ¿Puedes cambiar la respuesta elegida? Me confundí, y los comentarios son correctos, la otra respuesta es mucho mejor.
Geoff
No uso la pantalla hoy en día, pero los votos positivos parecen lo suficientemente convincentes. :)
JesperE

Respuestas:

359

Creo que puedes agregar una línea como esta a tu ~/.screenrc:

termcapinfo xterm* ti@:te@

Donde "xterm *" es una coincidencia global de su TÉRMINO actual. Para confirmar que funciona, ^ A ^ D para desconectar de la pantalla, luego screen -d -rvolver a conectar, luego lsvarias veces e intentar desplazarse hacia atrás. Esto funciona para mi.


¿Qué es esta magia? Bueno, consultemos las páginas del manual.

screen(1) dice:

termcapinfo term terminal-tweaks [window-tweaks]
  [..]
  The first argument specifies which terminal(s) should be affected by this
  definition. You can specify multiple terminal names by separating them with
  `|'s. Use `*' to match all terminals and `vt*' to match all terminals that
  begin with "vt".
  [..]
  Some examples:

      termcap xterm*  LP:hs@

  Informs screen that all terminals that begin with `xterm' have firm
  auto-margins that allow the last position on the screen to be updated (LP),
  but they don't really have a status line (no 'hs' -  append  `@'  to turn
  entries off).  Note that we assume `LP' for all terminal names that start
  with "vt", but only if you don't specify a termcap command for that terminal.

De termcap(5):

String capabilities
    [..]
    te   End program that uses cursor motion
    ti   Begin program that uses cursor motion
Pistos
fuente
28
Seguí la sugerencia de Pistos, y funciona parcialmente. Como él describe, puedo ingresar algunos comandos (para producir suficiente salida para desplazar la pantalla), y luego usar la rueda del mouse para retroceder a través de las líneas anteriores. De hecho, estoy usando la pantalla a través de Konsole en KDE (xterm con pestañas, básicamente), y la barra de desplazamiento para la ventana de Konsole funciona de la misma manera. Pero hay un problema: si cambia entre las ventanas de la pantalla (^ An, ^ Ap), su búfer de desplazamiento hacia atrás se estropea. El contenido de cualquier ventana a la que se cambie simplemente se 'guardará' en su búfer de desplazamiento. Eso realmente lo disminuye.
Ryan B. Lynch
22
Pero esto se desplaza en el historial de comandos. Quiero desplazarme por el búfer de salida.
JesperE
15
@JesperE: También lo experimenté desplazando el historial de comandos (estoy usando el terminal GNOME de Ubuntu). Lo arreglé yendo a Edición -> Preferencias de perfil -> Desplazamiento y desmarcando "Usar las teclas para desplazarse en la pantalla alternativa". Tenga en cuenta que todavía necesitaba usar la solución de Pistos.
Michael Krebs
2
Además de trabajar en OS X Lion, esto también funciona en Putty, iSSH y Prompt (by Panic). ¡Esta línea debe estar presente en todos los archivos .screenrc!
funroll
20
Esto permite desplazarse en el terminal y no desplazarse en la sesión de pantalla. Es decir, si trabaja con regiones divididas o cambia una ventana, no podrá desplazarse hacia atrás en esta región y, en cambio, se desplazará hacia atrás en la salida del terminal y verá la salida como estaba antes de dividir la región o cambiar la ventana .
g_daniel
69

En la pantalla, primero debe ingresar al "modo de desplazamiento hacia atrás" (o "modo de copia") para poder desplazarse en el búfer de desplazamiento hacia atrás: combinación de teclas Ctrl- a Esco Ctrl- a Ctrl- [. Luego, puede desplazarse por el historial con las teclas Arriba y Abajo (o Ctrl- b, Ctrl- fpara mover una página).

En ese modo, la rueda del mouse también debería funcionar, si funciona en otras aplicaciones. Finaliza el "modo de desplazamiento hacia atrás" con Esc.

En cuanto a desplazar el búfer de desplazamiento hacia atrás sin entrar primero en el modo de desplazamiento hacia atrás, eso probablemente no sea posible sin modificar la pantalla. Nunca he oído hablar de una forma de acceder al búfer de desplazamiento, aparte del modo de desplazamiento.

sleske
fuente
21
Sí, sé sobre el modo de desplazamiento hacia atrás. Esperaba no tener que ingresar manualmente el modo de desplazamiento hacia atrás para usar el mouse. Gracias.
JesperE el
44
"Modo de desplazamiento" es más bien un término no oficial en mi humilde opinión. :) Ctrl + a Esc entrará en el modo de copia ; Este modo siempre se ha llamado así, ya que su propósito principal es hacer posible copiar texto de aquí para allá. La posibilidad de desplazarse con la rueda del mouse en modo copia (nb. No funciona para mí) debería verse más bien como una especie de "truco adicional", pero no como el objetivo principal de este modo.
syntaxerror
1
@syntaxerror: Bueno, los documentos lo llaman "modo de copia / desplazamiento", y mencionan un "búfer de desplazamiento" ( gnu.org/software/screen/manual/screen.html#Copy-and-Paste ), así que supongo que ' re ambos bien :-). De todos modos, agregué "modo de copia" a mi respuesta.
sleske
¡Excelente! Yo quería hacer esto también, pero antes de jugar en tales viejas respuestas, soy conocido por preguntar primero (aunque soy consciente de que el SO / reglas se no lo prescriben; pero esa es la cosa con las reglas no escritas.)
SyntaxError
Esta debería haber sido la respuesta oficial. Gracias :)
Linh
24

El excelente artículo al que se refiere Jon Z ya no está disponible, pero pude obtener la versión de solo texto del caché de Google. Lo estoy guardando aquí en caso de que Google también lo deje en el futuro. La publicación original fue de Mikael Ståldal, por lo que se agradece el crédito.

-

Cómo usar la rueda del mouse en la pantalla GNU

GNU Screen es compatible con el desplazamiento hacia atrás, pero por defecto debe usar teclas incómodas para usarlo. Me gustaría poder usar Shift-PageUp, Shift-PageDown y la rueda del mouse para desplazarme, como puede hacer en xterm.

No fue fácil configurar Screen para esto, e involucra la cooperación con el emulador de terminal. Pero finalmente logré lograr una solución que funciona bastante bien. Agregue esto a su archivo ~ / .Xresources (debe cerrar sesión para que esto surta efecto):

XTerm*saveLines: 0
XTerm*vt100.translations: #override \n\
  Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  Lock @Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  @Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  <Btn4Down>: string(0x1b) string("[5S") \n\
  Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  Lock @Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  @Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  <Btn5Down>: string(0x1b) string("[5T") \n\
  Shift <KeyPress> Prior: string(0x1b) string("[25S") \n\
  Shift <KeyPress> Next: string(0x1b) string("[25T") \n

Luego agregue esto a su archivo ~ / .screenrc:

defscrollback 1000

# Scroll up
bindkey -d "^[[5S" eval copy "stuff 5\025"
bindkey -m "^[[5S" stuff 5\025

# Scroll down
bindkey -d "^[[5T" eval copy "stuff 5\004"
bindkey -m "^[[5T" stuff 5\004

# Scroll up more
bindkey -d "^[[25S" eval copy "stuff \025"
bindkey -m "^[[25S" stuff \025

# Scroll down more
bindkey -d "^[[25T" eval copy "stuff \004"
bindkey -m "^[[25T" stuff \004

Esto funciona en xterm. No estoy seguro de si funciona en otros emuladores de terminal.

Tenga en cuenta que esto desactiva el soporte de desplazamiento normal en xterm, solo podrá desplazarse cuando use la pantalla. Es posible que desee iniciar xterm de esta manera para usar siempre la pantalla:

xterm -e screen
Tommi R.
fuente
11

Y para usar la rueda de desplazamiento en un VIM dentro de la pantalla GNU:

[.vimrc]

set mouse=a             " hold shift to copy xterm
set ttymouse=xterm2     " necessary for gnu screen & mouse
edench
fuente
Impresionante, esto en combinación con el truco screenrc me alegró el día desde que uso awesomewm y los terminales son mi vida
Fotios
7

Presione Ctrl+ aseguido de[

La barra de título de su terminal ahora debería decir Modo de copia.

Ahora las teclas de flecha y la rueda del mouse deberían funcionar como se esperaba.

Para volver a la normalidad, presione Esc o presione Entrar un par de veces.

Peter Crotty
fuente
5

Establecer TERMvariable en vt100lugar de xtermantes de ejecutar la pantalla también funciona.
He estado usando esto durante mucho tiempo, funciona de maravilla.

Agregue esto a su .bashrc:

# make scrollbar / wheel scrolling work when running screen in gnome-terminal (or other)
if [ "$TERM" = "xterm" ]; then
  export TERM=vt100
fi

-

Como referencia, mi .screenrctiene esto (no es necesario para este AFAIK):

# Extend the vt100 desciption by some sequences.
termcap  vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC
exprimir
fuente
Configurar la variable de entorno TERM como se describe (antes de ejecutar la pantalla) funcionó para mí. Es tan simple como ingresar "export TERM = vt100". Muchas gracias. PD: Estoy en una Mac, ssh en una caja de Linux y allí ejecuto la pantalla.
Daniel K.
Como se mencionó anteriormente, esto no funciona según lo previsto. Sí, puede desplazarse, sin embargo, su búfer de desplazamiento se anula cuando cambia de ventana.
Halsafar
solución muy subestimada
MolbOrg
4

Lo siguiente funcionó para mí tanto en Cygwin como en Putty: edite .screenrc y agregue

terminfo xterm* ti=:te=
Torbjör Weiland
fuente
3

Si las respuestas anteriores no funcionan para usted, asegúrese de no tener un subtítulo o la opción alwayslastline establecida en su .screenrc. Si los tiene, esto no funcionará:

termcapinfo xterm* ti@:te@

Si necesita esta información, puede intentar configurarla en el título de su terminal (con termcapinfo)

nachocab
fuente
0

La solución cuando se usa "Ubuntu 16.04.2 LTS" es la siguiente:

una). Actualice $ HOME / .screenrc como las respuestas anteriores han especificado:

termcapinfo xterm* ti@:te@

si). Use "Configuración". "Aplicaciones preferidas" para modificar el terminal predeterminado a xterm, seleccionando el "Terminal X" en la lista desplegable.

Algunas notas superfluas

  • Ninguno de los otros terminales, incluida la instalación de "lxterminal", funcionó para mí, incluso cuando modifiqué la línea termcapinfo a "*" en lugar de "xterm *".

  • Al hacer clic en el botón de menú en la esquina superior izquierda de la pantalla, puede obtener el cuadro de diálogo Configuración con el tercer icono en la esquina inferior derecha.

Malcolm Boekhoff
fuente