Di shell saya, saya memiliki kontrol aliran dinonaktifkan menggunakan stty -ixon
. Ini berfungsi dengan baik di shell dan ketika saya meluncurkan tmux
dan memulai program di dalamnya
tmux
.
Namun, ketika memulai sesi baru dari baris perintah dan langsung meluncurkan perintah, pengaturan kontrol aliran tidak dihormati dan ctrl-smembekukan terminal.
Ini bekerja:
tmux new-session -s foo
vim
Ini tidak menghormati stty
pengaturan kontrol aliran:
tmux new-session -s foo vim
Bagaimana saya bisa menonaktifkan kontrol aliran bahkan dalam kasus terakhir?
tmux
semua kasus, atau apakah Anda tertarik untuk mengetahui mengapa ini bekerja pada contoh pertama tetapi tidak pada yang kedua?Jawaban:
Jika Anda memiliki
stty -ixon
inisialisasi shell Anda, itu cukup sederhana: ketikatmux
membuat terminal baru, ia menjalankan shell default pengguna secara default dan pada gilirannya menonaktifkan aliran kontrol selama inisialisasi. Namun, ketika Anda meminta tmux untuk menjalankan perintah tertentu (ViM dalam kasus Anda), tidak ada inisialisasi yang terjadi dan pengaturan terminal default (kontrol aliran diaktifkan) berlaku.harus memperbaiki masalah Anda.
sumber
Solusi yang tidak perlu mengubah
tmux
panggilan adalah dengan memasukkanstty
panggilan dalam file$HOME/.zshenv
. File ini diurai oleh ZSH dan digunakan bahkan untuk shell yang tidak interaktif.Pengguna BASH harus mengatur variabel lingkungan
BASH_ENV=$HOME/.zshenv
untuk membuatnya berfungsi.sumber
.zshrc
dan.zshenv
. Hati-hati dengan itu>
. Gunakan:echo 'stty -ixon' >> ~/.zshenv