Uso de las teclas de flecha Ctrl con PuTTY y pantalla

33

Busqué y no pude encontrar una solución para esto en ninguna parte. Estoy usando PuTTY de Windows para conectarme a varios servidores donde ejecuto bash y screen. Parece que bash funciona bien con las teclas de flecha Ctrl para saltar palabra por palabra en la línea de comando, pero dentro de la pantalla no funciona. No en la pantalla, ctrl-left envía "^ [OC y ctrl-right es" ^ [OD ". Dentro de la pantalla obtengo" ^ [[C "y" ^ [[D ", que parecen ser los códigos para las teclas de flecha izquierda / derecha. ¿Hay alguna forma de que la pantalla reconozca las teclas de flecha Ctrl cuando utilizo PuTTY? (FYI, no recuerdo haber tenido este problema cuando utilicé gnu-terminal en linux en lugar de PuTTY).

ACTUALIZACIÓN: Parece que PuTTY es el problema ya que no está enviando los códigos de escape que son necesarios para que esto funcione. Me rindo por ahora y uso Cygwin + mintty.

kbosak
fuente
Wow, Mintty es genial: he estado buscando un emulador de terminal decente para Windows desde hace algún tiempo. Gracias por eso.
azulado
Sin embargo, estoy obteniendo ^[[1;5ACtrl-Up, que parece ser más correcto, de acuerdo con code.google.com/p/mintty/wiki/Keycodes#Cursor_keys
azulado

Respuestas:

13

Editar:

Esto es lo que funcionó para mí:

  • Mis ~/.bashrcconjuntos TERM=xterm(el mío es TERM=xterm-256colors) anulando las pantallasTERM=screen
  • Configuré PuTTY> Terminal> Características> Desactivar el modo de teclas de cursor de la aplicación en marcado
  • Entro tput smkxen el indicador de Bash
  • Ahora las teclas Ctrl-Arrow saltan palabra por palabra

  • Con fines informativos, si lo hago:
    tput smkx | hexdump -c
    obtengo
    0000000 033 [ ? 1 h 033 =
    y
    tput rmkx | hexdump -c
    me da
    0000000 033 [ ? 1 l 033 >

Creo que hay una manera de reelaborar esto en algo un poco mejor, pero es lo que tengo hasta ahora y parece funcionar.

Respuesta original:

De info screen:

Cada ventana en una sesión de 'pantalla' emula un terminal VT100, con algunas funciones adicionales agregadas. El emulador VT100 está codificado, no se pueden emular otros tipos de terminales.

Y los VT100 no tienen códigos de teclas Ctrl-Arrow.

Pausado hasta nuevo aviso.
fuente
set -o vi(si eres ese tipo de persona :)
MikeyB
1
@MikeyB: ¿Cómo ayuda eso (por cierto) no ayuda?
Pausado hasta nuevo aviso.
Gracias. No es la respuesta que esperaba, pero ahora puedo seguir adelante y vivir con esta limitación o usar otra combinación de teclas.
kbosak
1
@Dennis: Bueno, te da otra forma de manejar el avance / retroceso si eres el tipo de persona que puede entenderlo. set -o viactiva el modo de línea de comando vi para que pueda presionar ESCy usar las teclas vi para moverse y editar su línea de comando.
MikeyB
1
@kbosak: tampoco estoy contento con esa respuesta. Por eso lo arreglé . :-)
pausa hasta nuevo aviso.
23

Como se menciona aquí , puede poner en ~ / .inputrc:

"\eOD": backward-word
"\eOC": forward-word

Funcionó para mi.

Fayer Michael
fuente
55
Esto funcionó para mí y fue mucho más fácil que la respuesta aceptada.
Petrus Theron
Esto también funcionó para mí, mientras que la respuesta aceptada no lo hizo
Schiavini
+1 Respuesta sucinta que simplemente funciona.
Adam Caviness
3
Asegúrese de tener $include /etc/inputrcen la parte superior de su .inputrcarchivo, de lo contrario, readline no leerá los enlaces de todo el sistema, y ​​las teclas como Inicio y Fin se romperán.
James
1
¡Esta debería ser la respuesta aceptada!
Shailen
4

Me sorprende un poco que haya conseguido que Putty envíe ctrl-arrowkeys correctamente incluso sin usar la pantalla, ya que nunca me ha funcionado. Mi solución fue cambiar a usar alt-arrowkeys (meta-arrowkeys), que creo que tienen el mismo enlace de palabra hacia adelante / hacia atrás en bash por defecto, aunque tuve que emitir un par de comandos adicionales para que zsh los reconozca:

bindkey "^ [^ [[C" adelante-palabra # Meta-RightArrow
bindkey "^ [^ [[D" hacia atrás-palabra # Meta-LeftArrow
Zed
fuente
Puedo ir por esta ruta también. La tecla Ctrl izquierda es mucho más fácil de presionar que las teclas meta o alt (al menos en mi teclado). Oh bien.
kbosak
4

En caso de que otros encuentren esta vieja pregunta como yo, una solución más reciente:

¡Ctrl y las teclas de flecha no funcionan en masilla! ¿Qué debo hacer?

putty invierte la sensación del modo de la tecla del cursor en ctrl, que es un poco difícil de detectar para tmux correctamente. Para obtener las teclas Ctrl correctas, cambie la configuración de terminfo para que kUP5 (Ctrl-Up, etc.) sean las versiones ajustadas, y desactive smkx / rmkx para que tmux no cambie el modo. Por ejemplo, con esta línea en .tmux.conf (suponiendo que tenga TERM establecido en xterm):

set -g terminal-overrides "xterm *: kLFT5 = \ eOD: kRIT5 = \ eOC: kUP5 = \ eOA: kDN5 = \ eOB: smkx @: rmkx @"

Tenga en cuenta que esto solo funcionará en tmux 1.2 y superior.

http://stuff.mit.edu/afs/athena/project/bsd/src/tmux-1.3/FAQ

Collin Grady
fuente
0

Debe consultar la documentación de terminfo, ncurses, screen y putty si desea depurar / configurar correctamente. También los accesos directos bash se pueden configurar con inputrc. Mire las páginas de manual de bash y busque inputrc.

Mircea Vutcovici
fuente
No creo que el problema sea lo que hay en inputrc. Ya probé varias soluciones posibles que implicaron poner entradas en la computadora sin éxito. De nuevo, parece que se está enviando un código incorrecto a la pantalla para las teclas de flecha Ctrl. Tampoco quiero pasar mucho más tiempo en esto de lo que ya tengo, ya que en realidad es solo un pequeño inconveniente.
kbosak
0

¿Tiene la codificación de caracteres correcta en Putty? Si se conecta a un servidor en UTF-8 y su masilla está en un juego de caracteres estándar, en vim, se escriben las teclas de flecha. Si Putty está en UTF-8, puede mover el cursor. Quizás sea lo mismo en tu caso ...

Dom
fuente
No es un problema vi / vim en absoluto y solo vi una opción en PuTTY para el conjunto de caracteres, que no ayudó.
kbosak
Pruebe las diferentes opciones en Terminal-> Teclado-> Las teclas de función y el teclado. Por cierto, para mí Ctrl-Arrow tampoco funciona en bash, hace lo mismo que sin presionar Ctrl.
Prof. Moriarty
Sí, he probado tantas opciones y combinaciones de opciones sin suerte. Para su información, hay algunas entradas que puede poner en la computadora para ayudar con las teclas de flecha Ctrl en bash, pero no ayudan cuando se usa la pantalla.
kbosak
0

En su configuración de masilla en Terminal -> Características, hay algunas casillas de verificación "deshabilitar". Es posible que desee intentar deshabilitar las teclas de cursor de la aplicación o el modo del teclado de la aplicación; a veces, la masilla intenta ser "demasiado inteligente" y envía caracteres de control que no son compatibles con el servidor.

tylerl
fuente
0

Estoy usando Terminal> Teclado> Teclas de función> Xterm R6 que ayuda a que las teclas de función htop (búsqueda f4, etc.) funcionen como se espera.

Lo que descubrí es que, en lugar de usar CTRL + flecha, ALT + flecha salta palabras en su lugar.

Dan
fuente