Terminal

tmux 不尊重禁用的控制流

  • September 12, 2017

在我的 shell 中,我使用stty -ixon. 這在 shell 中以及當我tmuxtmux.

但是,當從命令行啟動新會話並直接啟動命令時,流量控制設置不受尊重並 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才能使其工作。

引用自:https://unix.stackexchange.com/questions/75711