Recientemente comencé a usar tmux (era un usuario de pantalla antes) y me encanta, excepto por un pequeño problema. Uso emacs dentro de mi sesión de tmux y estoy acostumbrado a usar las teclas de flecha Shift para moverme entre las ventanas de emacs (no las ventanas de tmux). Cuando se ejecuta dentro de tmux, estos enlaces parecen dejar de funcionar por completo (es como si no se registraran en emacs). Si salgo de tmux y solo ejecuto emacs en mi shell, funcionan bien.
Estoy usando iTerm2, ssh'd en una caja de Linux, ejecutando tmux / emacs allí. Tengo las combinaciones de teclas Shift-arrow configuradas de la siguiente manera en mis .emacs:
(global-set-key "\M-[1;2A" 'windmove-up)
(global-set-key "\M-[1;2B" 'windmove-down)
(global-set-key "\M-[1;2C" 'windmove-right)
(global-set-key "\M-[1;2D" 'windmove-left)
Cuando no se ejecuta en tmux, puedo confirmar que esas son las secuencias de caracteres correctas para las combinaciones de teclas de flecha de desplazamiento haciendo Cq en emacs y luego presionando la secuencia de teclas. Dentro de tmux, incluso eso no funciona porque no parece ver ninguna entrada de la pulsación de la tecla Mayús (solo se encuentra en el indicador Cq).
Mirando las combinaciones de teclas para tmux, no creo que nada esté vinculado a las teclas de flecha Mayúsculas e incluso si fuera así, solo se registrarían después de ingresar el prefijo (que en mi caso está vinculado a Co).
¿Alguna idea sobre cómo hacer que las teclas de flecha de desplazamiento funcionen nuevamente dentro de tmux?
Respuestas:
Primero, asegúrese de que su TÉRMINO sea correcto en cada ubicación:
xterm
-algo (por ejemploxterm-256color
) dentro de su shell local que se ejecuta en su ventana iTerm2xterm
-algo dentro de su shell después de SSHing al sistema LinuxEsto debería ser lo mismo que lo que esté usando localmente en iTerm2 , ya que SSH debería pasarlo al lado remoto (y, lo que es más importante, el lado remoto no debe anular ciegamente el valor en un archivo de inicialización de shell).
screen
-algo (pscreen-256color
. ej. ) dentro de su shell que se ejecuta bajo tmux en el sistema LinuxSiempre debe usar un
screen
TERM basado en tmux .Tener un
xterm
TERM inmediatamente fuera de tmux permitirá que tmux reconozca las teclas de flecha modificadas, pero no las pasará a menos que también tengaxterm-keys
activada su opción de ventana. Pon esto en tu~/.tmux.conf
sistema Linux:Las secuencias para las teclas desplazadas ahora deberían pasar a Emacs , ejecutándose dentro de tmux , a través de una conexión SSH, dentro de una ventana iTerm2 .
fuente
export XTERM=xterm-256color
(Estoy escribiendo esto porque no sabía qué significa "su TÉRMINO" en la respuesta, estaba buscando un comentario que explicara que ... no había ninguno, y ahora hay uno.)Primero debe habilitar
xterm-keys
en su configuración tmux. Así que pon lo siguiente en~/.tmux.conf
Pero, esto romperá otras combinaciones de teclas. Para solucionarlos, ponga lo siguiente en su
~/.emacs
o~/.emacs.d/init.el
configTambién tengo mi solución en archlinux wiki
fuente
Las preguntas frecuentes de tmux solían contener la siguiente entrada :
Abrí el problema tmux # 1349 para solicitar la restauración de la entrada de preguntas frecuentes.
fuente
En general, problemas como este ocurren debido a una falta de correspondencia entre lo que envía el emulador de terminal y lo que espera la aplicación del cliente.
Los diferentes emuladores de terminal tienen diferentes grados de personalización, por lo que es necesario familiarizarse con los ajustes de emulación de uno en particular.
Las aplicaciones del cliente dependen del valor
$TERM
que se usa para buscar las capacidades del terminal (emulador) en laterminfo
(otermcap
) base de datos.En su caso, sus enlaces emacs usan secuencias explícitas por lo tanto
$TERM
y terminfo son irrelevantes: se espera un emulador de terminal específico, como ya descubrió,xterm
uno compatible.fuente