tmux 不尊重禁用的控制流

tmux 不尊重禁用的控制流

在我的 shell 中,我使用 禁用了流量控制stty -ixon。这在 shell 中以及当我tmuxtmux.

但是,当从命令行启动新会话并直接启动命令时,不会遵守流量控制设置并 ctrl-s冻结终端。

这有效:

tmux new-session -s foo
vim

这不尊重stty流量控制设置:

tmux new-session -s foo vim

即使在后一种情况下,如何禁用流量控制?

答案1

如果您stty -ixon的 shell 已初始化,则相当简单:tmux创建新终端时,它默认运行用户的默认 shell,然后在初始化期间禁用控制流。但是,当您要求 tmux 运行特定命令(在您的情况下为 ViM)时,不会发生初始化并且应用默认终端设置(启用流控制)。

tmux new-session -s foo "stty -ixon; vim"

应该可以解决你的问题。

答案2

不需要更改调用的解决方法tmux是将调用包含stty在文件中$HOME/.zshenv。该文件由 ZSH 解析,甚至可用于非交互式 shell。

echo 'stty -ixon' | tee -a ~/.zshenv
# ... or ...
echo 'stty -ixon' >> ~/.zshenv

BASH 用户必须设置环境变量BASH_ENV=$HOME/.zshenv才能使其工作。

相关内容