GNU/Linux >> Tutoriales Linux >  >> Linux

Las teclas Inicio/Fin no funcionan en tmux

En tmux 2.0, solo puede agregar estas 2 líneas en su .tmux.conf :

bind -n End send-key C-e
bind -n Home send-key C-a

Parece que el principal problema es usar xterm-256color para $TERM. Cambié $TERM a screen-256color y el problema desapareció.


Si desea quedarse con xterm-256color en tmux por alguna razón, use la solución arch con inputrc. Lo probé en tmux con rxvt, ruby ​​irb, python, lua y las teclas home/end están bien. Probablemente todas las aplicaciones de readline estarán bien.

De la wiki de arch:

Lo primero es lo primero:

no configure $TERM manualmente; deje que lo haga la terminal.

Muchas aplicaciones de línea de comandos utilizan la biblioteca Readline para leer entradas. Por lo tanto, la configuración adecuada de Readline puede solucionar Home y End en muchos casos.

el archivo /etc/inputrc predeterminado no incluye una asignación para las teclas de inicio/fin.

Para verificar cuál es la secuencia de escape emitida para estas teclas:

1. Ctrl + V
2. Home
3. Spacebar
4. Ctrl + V
5. End

esto probablemente imprimirá:$ ^[[1~ ^[[4~ . Entonces, debe agregar un mapeo para estas secuencias a su inputrc (/etc/inputrc para que sea global, o solo para su usuario ~/.inputrc):

"\e[1~": beginning-of-line
"\e[4~": end-of-line

Agregue lo siguiente a su .tmux.conf :

bind-key -n Home send Escape "OH"
bind-key -n End send Escape "OF"

¡Y listo!

Explicación

Después de intentar cada uno de estos, y varios otros que vi mientras examinaba otras respuestas y documentación, esto finalmente funcionó para mí en cada escenario que le presenté. No puedo prometerte lo mismo, porque los escenarios de todos son diferentes, pero esto es lo que terminé.

Esto se descubrió después de introducir la misma prueba/error y lógica de un artículo algo relevante que ya no está disponible. La clave es dónde está ocurriendo la traducción; en mi caso, esto sucede dentro de mi .tmux.conf , en lugar de .bashrc o .zshrc (principalmente porque mi casa/final funcionó bien fuera de tmux )

Depuración

Puede depurar este problema usando cat -v .

Ejecutar cat -v , luego presione el Inicio y Fin llaves. Salga usando Ctrl +C .

$ cat -v

Así es como se veía mi salida dentro de tmux using zsh , zsh y bash :

tmux

➜  ~ cat -v
^[[1~^[[4~^C

zsh

➜  ~ cat -v
^[[H^[[F

bash

bash-3.2$ cat -v
^[[H^[[F

Solucionar

Compare los ejemplos anteriores con lo que esperamos ver, emparejando tput con cat -v :

$ tput khome | cat -v; echo
^[OH
$ tput kend | cat -v; echo
^[OF

Conclusión

Porque este problema existe únicamente dentro de tmux , y no dentro de los propios shells, opté por realizar los cambios de vinculación dentro de la configuración de tmux. Usando bind-key emparejado con send , podemos usar el Escape palabra clave emparejada con la secuencia que queremos lograr nuestra traducción. Así:

bind-key -n NAME_OF_KEY send Escape SEQUENCE_GOES_HERE

Este proceso de depuración y solución se puede aplicar a cualquier otro problema de traducción clave. Pero, no te vuelvas demasiado loco. Algunas teclas están asignadas a ciertas secuencias de escape por una razón. Observe cómo bash y zsh recibió el ^[[H secuencia para Inicio en lugar de ^[OH; probablemente no se recomienda que anulemos esto en nuestro .zshrc a menos que tengamos problemas importantes con esto en zsh .


Linux
  1. ¿Cómo hacer que Vim funcione correctamente con Tmux?

  2. ¿Linux Setuid no funciona?

  3. Linux:¿por qué no funciona Setuid?

  4. ¿Vim no se ejecuta dentro de Tmux?

  5. ¿Por qué `exit &` no funciona?

¿Tmux no obtiene el .tmux.conf?

gpg:comando no encontrado

tmux Ctrl+B no funciona

Las asociaciones de teclas Tmux no funcionan

Reasignar Super+tecla de flecha a inicio/fin

viendo salida de ps aux | grep blah en tmux no funcionará?