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-gnome
paquete 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 vim
es 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 xterm
a mi~/.screenrc
archivo lo solucionó por mí. ¡Gracias de nuevo!Respuestas:
Como intuyó en su actualización, agregar
term xterm
al~/.screenrc
archivo parece solucionar este problema.fuente
screen
no solo propaga la$TERM
variable de entorno en lugar de anularla"screen"
. Presumiblemente hay algunas circunstancias en las que es importante tener$TERM == screen
.TERM=screen
es 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 screen
yinfocmp 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 xterm
hará que recién abiertos pantallas bajo esa instancia para comenzar con su$TERM
variable de entorno conjunto axterm
; esto a su vez se propagará avim
instancias 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~/.screenrc
archivo, 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=xterm
hará 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=screen
se ejecuta en una instancia de vim iniciada con$TERM=xterm
.fuente
El problema subyacente es que la asignación realizada
screen
entre el terminal real (identificado por laTERM
variable de entorno externascreen
) y la emulación internascreen
está incompleta.Si por casualidad lo prueba (usando vttest o tack ), puede notar deficiencias para
Intenta solucionar estos problemas configurando
term
de.screenrc
tiene 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
screen
documentació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
term
configuració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=xterm
se 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.xterm
es 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
term
en su.screenrc
: resuelve más problemas de los que crea. Lo contrario es cierto de laterm
configuración.fuente