En mi shell tengo el control de flujo deshabilitado usando stty -ixon
. Esto funciona perfectamente en el shell y cuando inicio tmux
e inicio programas dentro
tmux
.
Sin embargo, cuando se inicia una nueva sesión desde la línea de comandos y se inicia directamente un comando, la configuración del control de flujo no se respeta y ctrl-scongela el terminal.
Esto funciona:
tmux new-session -s foo
vim
Esto no respeta la stty
configuración de control de flujo:
tmux new-session -s foo vim
¿Cómo puedo desactivar el control de flujo incluso en este último caso?
tmux
para todos los casos, o está interesado en aclarar por qué funciona en el primer ejemplo pero no en el segundo?Respuestas:
Si tiene
stty -ixon
la inicialización de su shell, es bastante simple: cuandotmux
crea nuevos terminales, ejecuta el shell predeterminado del usuario de forma predeterminada y eso a su vez deshabilita el flujo de control durante la inicialización. Sin embargo, cuando le pide a tmux que ejecute un comando específico (ViM en su caso), no se realiza la inicialización y se aplica la configuración predeterminada del terminal (control de flujo habilitado).Debería solucionar su problema.
fuente
Una solución alternativa que no requiere cambiar la
tmux
llamada es incluir lastty
llamada en el archivo$HOME/.zshenv
. ZSH analiza este archivo y lo utiliza incluso para shells no interactivos.Los usuarios de BASH tienen que establecer la variable de entorno
BASH_ENV=$HOME/.zshenv
para que esto funcione.fuente
.zshrc
y.zshenv
. Pero ten cuidado con>
eso. Uso:echo 'stty -ixon' >> ~/.zshenv