tmux không tôn trọng luồng điều khiển bị vô hiệu hóa


8

Trong vỏ của tôi, tôi đã vô hiệu hóa kiểm soát dòng chảy bằng cách sử dụng stty -ixon. Điều này hoạt động hoàn hảo trong shell và khi tôi khởi chạy tmuxvà bắt đầu các chương trình bên trong tmux.

Tuy nhiên, khi bắt đầu một phiên mới từ dòng lệnh và trực tiếp khởi chạy lệnh, cài đặt điều khiển luồng không được tuân thủ và ctrl-sđóng băng thiết bị đầu cuối.

Những công việc này:

tmux new-session -s foo
vim

Điều này không tôn trọng sttycài đặt kiểm soát dòng chảy:

tmux new-session -s foo vim

Làm thế nào tôi có thể vô hiệu hóa kiểm soát dòng chảy ngay cả trong trường hợp sau?


Là đủ để vô hiệu hóa kiểm soát dòng chảy cùng nhau trong tmuxtất cả các trường hợp, hoặc bạn quan tâm đến việc đóng đinh tại sao nó hoạt động trong ví dụ đầu tiên nhưng không phải là thứ hai?
slm

@slm Ở nơi đầu tiên tôi muốn sửa nó. Tuy nhiên, tôi quan tâm tại sao tmux hành xử như vậy.
Marco

Câu trả lời:


5

Nếu bạn có stty -ixontrong quá trình khởi tạo shell của mình, điều đó khá đơn giản: khi tmuxtạo các thiết bị đầu cuối mới, nó sẽ chạy shell mặc định của người dùng theo mặc định và điều đó sẽ vô hiệu hóa luồng điều khiển trong quá trình khởi tạo. Tuy nhiên, khi bạn yêu cầu tmux chạy một lệnh cụ thể (ViM trong trường hợp của bạn), không có khởi tạo nào diễn ra và cài đặt đầu cuối mặc định (bật điều khiển luồng) được áp dụng.

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

nên khắc phục vấn đề của bạn.


5

Một cách giải quyết không yêu cầu thay đổi tmuxcuộc gọi là đưa sttycuộc gọi vào tệp $HOME/.zshenv. Tệp này được phân tích cú pháp bởi ZSH và được sử dụng ngay cả đối với các shell không tương tác.

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

Người dùng BASH phải đặt biến môi trường BASH_ENV=$HOME/.zshenvđể thực hiện công việc này.


2
Tôi không biết nó làm gì, nhưng nó đã lừa. Đã thêm nó vào cả hai .zshrc.zshenv. Hãy cẩn thận với >mặc dù. Sử dụng:echo 'stty -ixon' >> ~/.zshenv
fireev
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.