tmux는 비활성화된 제어 흐름을 존중하지 않습니다.

tmux는 비활성화된 제어 흐름을 존중하지 않습니다.

내 셸에서는 stty -ixon. 이것은 쉘에서 그리고 내가 tmux있을 때 작동합니다 tmux.

그러나 명령줄에서 새 세션을 시작하고 명령을 직접 실행하면 흐름 제어 설정이 적용되지 않고 ctrl-s터미널이 정지됩니다.

이것은 작동합니다:

tmux new-session -s foo
vim

stty이는 흐름 제어 설정을 고려하지 않습니다 .

tmux new-session -s foo vim

후자의 경우에도 흐름 제어를 비활성화하는 방법은 무엇입니까?

답변1

stty -ixon쉘이 초기화 되면 매우 간단합니다. tmux새 터미널을 생성하면 기본적으로 사용자의 기본 쉘이 실행되고 초기화 중에 제어 흐름이 비활성화됩니다. 그러나 tmux에 특정 명령(귀하의 경우 ViM)을 실행하도록 요청하면 초기화가 발생하지 않고 기본 터미널 설정이 적용됩니다(흐름 제어 활성화).

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

문제가 해결될 것입니다.

답변2

호출을 변경할 필요가 없는 해결 방법은 tmux호출을 stty파일에 포함시키는 것입니다 $HOME/.zshenv. 이 파일은 ZSH에 의해 구문 분석되며 비대화형 쉘에서도 사용할 수 있습니다.

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

BASH 사용자는 BASH_ENV=$HOME/.zshenv이것이 작동하려면 환경 변수를 설정해야 합니다.

관련 정보