Terminal
tmux 不尊重禁用的控制流
在我的 shell 中,我使用
stty -ixon
. 這在 shell 中以及當我tmux
在tmux
.但是,當從命令行啟動新會話並直接啟動命令時,流量控制設置不受尊重並
ctrl-s
凍結終端。這有效:
tmux new-session -s foo vim
這不尊重
stty
流控制設置:tmux new-session -s foo vim
即使在後一種情況下,我如何才能禁用流量控制?
如果你
stty -ixon
在你的 shell 初始化中,這很簡單:當tmux
創建新終端時,它預設執行使用者的預設 shell,然後在初始化期間禁用控制流。但是,當您要求 tmux 執行特定命令(在您的情況下為 ViM)時,不會進行初始化,並且會應用預設終端設置(啟用流控制)。tmux new-session -s foo "stty -ixon; vim"
應該解決你的問題。
不需要更改
tmux
呼叫的解決方法是將呼叫包含stty
在文件中$HOME/.zshenv
。此文件由 ZSH 解析,甚至用於非互動式 shell。echo 'stty -ixon' | tee -a ~/.zshenv # ... or ... echo 'stty -ixon' >> ~/.zshenv
BASH 使用者必須設置環境變數
BASH_ENV=$HOME/.zshenv
才能使其工作。