Mar*_*rco 8 terminal keyboard tmux
在我的 shell 中,我使用stty -ixon
. 这在 shell 中完美运行,当我tmux
在
tmux
.
但是,从命令行启动新会话并直接启动命令时,不遵守流量控制设置并 ctrl-s冻结终端。
这有效:
tmux new-session -s foo
vim
Run Code Online (Sandbox Code Playgroud)
这不尊重stty
流量控制设置:
tmux new-session -s foo vim
Run Code Online (Sandbox Code Playgroud)
即使在后一种情况下,如何禁用流量控制?
如果您stty -ixon
在 shell 的初始化中进行了操作,则相当简单:当tmux
创建新终端时,它默认运行用户的默认 shell,从而在初始化期间禁用控制流。但是,当您要求 tmux 运行特定命令(在您的情况下为 ViM)时,不会进行初始化,并且会应用默认的终端设置(启用流量控制)。
tmux new-session -s foo "stty -ixon; vim"
Run Code Online (Sandbox Code Playgroud)
应该可以解决您的问题。
不需要更改tmux
调用的解决方法是将stty
调用包含在文件中$HOME/.zshenv
。该文件由 ZSH 解析,甚至用于非交互式 shell。
echo 'stty -ixon' | tee -a ~/.zshenv
# ... or ...
echo 'stty -ixon' >> ~/.zshenv
Run Code Online (Sandbox Code Playgroud)
BASH 用户必须设置环境变量BASH_ENV=$HOME/.zshenv
才能使其工作。