tmuxが無効な制御フローを考慮しない


8

私のシェルでは、を使用してフロー制御を無効にしていstty -ixonます。私が起動するとき、これはシェルで完璧に動作し、tmuxかつ内のプログラムを起動します tmux

ただし、コマンドラインから新しいセッションを開始し、コマンドを直接起動すると、フロー制御設定がctrl-s考慮されず 、端末がフリーズします。

これは機能します:

tmux new-session -s foo
vim

これはsttyフロー制御設定を尊重しません:

tmux new-session -s foo vim

後者の場合でもフロー制御を無効にするにはどうすればよいですか?


tmuxすべてのケースでフロー制御を一緒に無効にするだけで十分ですか、それとも最初の例では機能するが2番目の例では機能しない理由を詳しく調べたいですか?
slm

@slmそもそも修正してもらいたい。それにもかかわらず、なぜtmuxが動作するのか興味があります。
マルコ

回答:


5

stty -ixonシェルの初期化を行っている場合、それはかなり単純です。tmux新しい端末を作成すると、デフォルトでユーザーのデフォルトシェルが実行され、初期化中に制御フローが無効になります。ただし、tmuxに特定のコマンド(この場合はViM)を実行するように要求すると、初期化は行われず、デフォルトの端末設定(フロー制御が有効)が適用されます。

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

あなたの問題を修正する必要があります。


5

tmux呼び出しを変更する必要がない回避策sttyは、ファイルに呼び出しを含めることです$HOME/.zshenv。このファイルはZSHによって解析され、非インタラクティブシェルでも使用されます。

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

BASHユーザーは、BASH_ENV=$HOME/.zshenvこれを機能させるために環境変数を設定する必要があります。


2
私はそれが何をしているのかわかりませんが、トリックをしました。それは両方に追加.zshrcして.zshenv>ただし注意してください。使用:echo 'stty -ixon' >> ~/.zshenv
firedev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.