В моей оболочке управление потоком отключено с помощью stty -ixon
. Это прекрасно работает в оболочке и когда я запускаю tmux
и запускаю программы внутри
tmux
.
Однако при запуске нового сеанса из командной строки и непосредственном запуске команды настройка управления потоком не соблюдается и ctrl-sзамораживает терминал.
Это работает:
tmux new-session -s foo
vim
Это не относится к stty
настройке управления потоком:
tmux new-session -s foo vim
Как я могу отключить управление потоком даже в последнем случае?
tmux
всех случаях, или вам интересно узнать, почему это работает в первом примере, а не во втором?Ответы:
Если у вас есть
stty -ixon
инициализация вашей оболочки, это довольно просто: когдаtmux
создаются новые терминалы, по умолчанию запускается оболочка пользователя по умолчанию, что в свою очередь отключает поток управления во время инициализации. Однако когда вы просите tmux запустить определенную команду (в вашем случае ViM), инициализация не происходит, и применяются настройки терминала по умолчанию (управление потоком включено).должен исправить вашу проблему.
источник
Обходной путь, который не требует изменения
tmux
вызова, состоит в том, чтобы включитьstty
вызов в файл$HOME/.zshenv
. Этот файл анализируется ZSH и используется даже для неинтерактивных оболочек.Пользователи BASH должны установить переменную окружения,
BASH_ENV=$HOME/.zshenv
чтобы сделать эту работу.источник
.zshrc
и.zshenv
. Будьте осторожны,>
хотя. Использование:echo 'stty -ixon' >> ~/.zshenv