Cuando ejecuto vim en la pantalla GNU, encuentro que las combinaciones CTRLcon las teclas de flecha y Pg * no funcionan como se esperaba.
Estoy usando el vim-gnomepaquete Ubuntu 10.10 .
En una máquina diferente, que también ejecuta Ubuntu, esto funcionó sin problemas; desafortunadamente no tengo esa configuración disponible para mí ahora.
Aquí hay una pregunta relacionada: ¿Cómo arreglar Ctrl + flechas en Vim?
Sin embargo, la solución sugerida es reasignar las combinaciones de teclas de vim para que funcionen con el emulador de terminal, en ese caso PuTTY. No recuerdo haber hecho nada por el estilo, y sospecho que hay una opción de configuración de pantalla que resolverá este problema.
También hay un hilo en la lista de correo gnu-screen que sugiere que ejecutar vim via $ TERM=xterm vimes una solución o solución adecuada. Esto funciona, pero estoy un poco preocupado de que pueda haber efectos secundarios. Tampoco suena lo suficientemente familiar como para ser la solución que configuré en la otra máquina (si fuera necesaria una solución).
fuente

term xterma mi~/.screenrcarchivo lo solucionó por mí. ¡Gracias de nuevo!Respuestas:
Como intuyó en su actualización, agregar
term xtermal~/.screenrcarchivo parece solucionar este problema.fuente
screenno solo propaga la$TERMvariable de entorno en lugar de anularla"screen". Presumiblemente hay algunas circunstancias en las que es importante tener$TERM == screen.TERM=screenes que las aplicaciones que se ejecutan en el interior se comunican dentro de un terminal de Screen: las secuencias de control que envían y reciben son las de Screen, no las de cualquier terminal que se muestre. Como puede separar una sesión de pantalla y volver a conectarla a un tipo diferente de terminal, esta capa de indirección es necesaria.xterm?infocmp screenyinfocmp xterm, y las secuencias de escape de pantalla con las secuencias de escape xterm . No tengo un desglose que ofrecer; a la mayoría de las aplicaciones no les importará, pero algunas podrían comportarse de manera molesta.Hay un par de otras formas de configurar el terminal que funcionan en los procesos en ejecución:
En un ejemplo de la pantalla en funcionamiento, presionando
^A-:y ejecutando el comandoterm xtermhará que recién abiertos pantallas bajo esa instancia para comenzar con su$TERMvariable de entorno conjunto axterm; esto a su vez se propagará aviminstancias invocadas . Estas instancias de vim mostrarán un comportamiento adecuado con respecto a CTRL-combos; Todavía no he descubierto ningún efecto secundario de esta estrategia. Este comando no afecta a las pantallas existentes. Por supuesto, este comando se puede usar en un~/.screenrcarchivo, por lo que es posible que este método se haya usado en la otra máquina.En una instancia de vim en ejecución, el comando
set term=xtermhará que CTRL-combos funcione en esa instancia de vim. Esto tiene el efecto secundario de desconectar el portapapeles X (es decir,@*y@+) por razones que aún no entiendo. Curiosamente, el efecto secundario del portapapeles también ocurre cuando el comando:set term=screense ejecuta en una instancia de vim iniciada con$TERM=xterm.fuente
El problema subyacente es que la asignación realizada
screenentre el terminal real (identificado por laTERMvariable de entorno externascreen) y la emulación internascreenestá incompleta.Si por casualidad lo prueba (usando vttest o tack ), puede notar deficiencias para
Intenta solucionar estos problemas configurando
termde.screenrctiene el inconveniente de que sólo funciona para un determinado terminal real, y no es portable a otras implementaciones de terminales. Las notas de documentaciónHay otra solución (con un inconveniente diferente), utilizando esta función de
screendocumentación :ncurses proporciona varias descripciones de terminales alternativas útiles para este caso, por ejemplo, screen.xterm-new , para reparar problemas en el mapeo de la pantalla. En la práctica, uso
TERM=xterm-new, y cuando ejecuto la pantalla, obtengo una asignación utilizable de las teclas de función.Refiriéndose de nuevo a la pantalla de
termconfiguración, en la prueba se puede notar que hay todavía problemas con la asignación, que se abordan en estas alternativas. Si fuera posible obtener una descripción precisa del terminal usandoterm, estas alternativas serían simples aliasscreen. No son.ncurses no proporciona
screen.xterm(sic) porque:TERM=xtermse usa mucho para emuladores de terminal que difieren de xterm; agregar esta asignación solo agravaría esa situación (ver, por ejemplo, ¿ por qué no solo usar TERM configurado en "xterm"? en las preguntas frecuentes de ncurses)screen.xtermes menos probable que el nombre alternativo se instale en sistemas remotos (consulte el comentario de cambio de junio de 2015 en la base de datos del terminal).En general, sin embargo, usar los nombres alternativos es una mejora sobre el uso
termen su.screenrc: resuelve más problemas de los que crea. Lo contrario es cierto de latermconfiguración.fuente