Saya tidak sengaja mengacaukan terminal tmux saya setelah cat
memasukkan file biner. Sekarang saya tmux
kacau. Melepaskan dan melampirkan kembali tidak membantu, juga tidak redraw (Cb r). Menjalankan reset
hanya menggambar ulang panel aktif, bukan sisanya. Menjalankan di ssty sane
dalam atau di luar tmux
tidak membantu.
Dalam setiap panel, saya memiliki umpan balik normal dari apa yang saya ketik (panggilan awal reset
segera setelah terminal kacau menyelesaikan ini), tetapi saya sepertinya tidak bisa memperbaiki status-bar.
Dalam gnome-terminal
, setiap pembaruan ke bilah status mengarah ke bilah status untuk tumbuh (lihat tangkapan layar di atas). Misalnya, ini terjadi ketika saya menjalankan aplikasi baru, ketika saya mengganti panel, atau ketika saya mengubah ukuran panel. Memaksa redraw (By C-b r
, dengan menjalankan reset
atau melalui menu terminal gnome) menyusut kembali status-bar ke satu baris, tetapi tetap rusak.
Di xterm
, bilah status tetap berada dalam satu baris, tetapi tetap rusak seperti yang digambarkan.
Saya menggunakan tmux 1.5.
- Bagaimana cara memperbaiki
tmux
-terminal saya ?
Laporan bug ini dari 2008 tampaknya menggambarkan masalah yang sama, tetapi ditandai sebagai diperbaiki. Saya tidak tahu versi apa yang diperbaiki, tetapi tmux 1.5 harus menyertakan perbaikan dari 2008.
Control
+b
+:
dan kemudianset -g status-right "#H"
untuk mengatur status-kanan ke nama host.Jawaban:
Coba ganti nama jendela 4
(Itu koma di tengah)
Atau: Control+b
:rename-window myNewname
sumber
ctrl+u
, jadi urutan lengkapnya adalahctrl+b , ctrl+u newname
byobu
juga (f8, <newname>
)Control-u
dibutuhkan?Control-,
sudah mengganti nama kan? Meskipun saya dapat mengkonfirmasi bahwa itu diperlukan dalam kasus saya, apakah ini semacam karakter reset?Anda perlu dua urutan perintah untuk membersihkan kekacauan:
Pertama, jalankan ini di jendela yang rusak (ini berfungsi bahkan ketika Anda berada di
ssh
):stty sane; printf '\033k%s\033\\\033]2;%s\007' "`basename "$SHELL"`" "`uname -n`"; tput reset; tmux refresh
Kemudian jalankan ini di komputer yang menjalankan
tmux
(berfungsi di dalam dan di luartmux
):tmux list-windows -a | while IFS=: read -r a b c; do tmux set-window-option -t "$a:$b" automatic-rename on; done
Dijelaskan secara rinci
Ini dikumpulkan untuk membahas semua bit yang ditemukan di jawaban dan komentar lain. Saat ini tampaknya hanya sedikit yang tersisa dengan perintah kedua. (Lihat "bit yang hilang" di bawah).
Untuk memahami cara kerjanya, mari kita bunuh baris status
tmux
dantty
. Setelah itu kita memperbaikinya lagi, menggunakan metode yang harus selalu tersedia (tidak seperti perintahreset
).Cara membuat
tmux
terminal (menganggapUTF-8
) tidak dapat digunakanDijelaskan:
stty -echo
membunuh respons tipe terminalprintf '\016'
tidakSO
, jadi Anda berada di set karakter alternatifprintf '\033]2;%s\007' 'right status text'
menetapkan status yang benar, dalam hal ini$'\355
', yang memperlihatkan bug presentasiprintf '\033k%2000s\033\\' $'\302\217'
menetapkan nama judul jendelaIni mungkin kombinasi yang dapat Anda lihat di terminal setelah beberapa perintah interaktif jatuh dan jatuh kembali ke shell. (Dengan
/bin/cat
Anda tidak dapat memprovokasistty -echo
IMHO, tetapi perintah interaktif sepertivim
biasanya mengatur ini.)Sekarang bersihkan kekacauan ini
Dijelaskan:
stty sane
set parameter terminal "waras", sehingga Anda mendapatkan kembali gema Anda saat mengetikprintf '\033k%s\033\\' "$(basename "$SHELL")"
mengatur judul jendela kembali normal. Anda dapat menggunakannya sebagaitmux rename-window "$(basename "$SHELL")"
alternatif, namuntmux rename-window
terbatas padatmux
tempat urutan escape selalu berfungsi.printf '\033]2;%s\007' "$(uname -n)"
mengatur ulang status-hak untuk ditampilkan sebagai default. (Perhatikan bahwa Anda tidak boleh menggunakantmux set status-right "something"
, karena hanya menghasilkanpane title
yang rusak, jadistatus-right
hanya memperlihatkan beberapa bug presentasi. Juga perhatikan, bahwa saya tidak menemukantmux
perintah untuk mengatur judul panel secara langsung.)tput reset
me-reset terminal, kalau-kalau ini telah kacautmux refresh
menyegarkan layar untuk menghilangkan puing-puing lain yang mungkin munculHilang sedikit
The
printf '\033k%s\033\\' "$(basename "$SHELL")"
looses kemampuan standartmux
untuk menyajikan perintah saat ini di area status kiri. Setelahprintf '\033k%s\033\\' "something"
dieksekusi kemampuan ini hilang dan saya tidak menemukan cara yang baik, namun, bagaimana mengembalikannya seperti sebelumnya.Tetapi, seperti disebutkan dalam komentar di bawah, Anda dapat mengaktifkan fitur serupa
tmux
sebagai pengganti dengantmux
pengaturan berikut :Entah lakukan ini di
tmux
baris perintah, yang dapat dicapai di jendela saat ini dengan "Escape":
(di mana "Escape" adalahtmux
kunci perintah Anda ) dan kemudian masukkan perintah.Atau keluar dari
tmux set-window-option automatic-rename on
terminal Anda saat ini, tetapi gagal jika Anda tidak berada pada level shell yang tepat, misalnya terminal tidak berfungsi di dalamsudo
ataussh
.Atau buka jendela lain di
tmux
sesi saat ini dan jalankan perintah berikut:Atau buka shell lain ke komputer yang menjalankan
tmux
dan menjalankan perintah berikut (ini di luar tmux):PS: Terima kasih kepada semua yang telah membantu menyusun solusi ini.
sumber
uname -n
bukanhostname -s
.hostname
berbahaya dalamroot
konteks, karena Anda mungkin berakhir dengan host Anda diganti namanya-s
di Linux / Unix yang lebih tua di manahostname
tidak ada opsi grok.stty sane
membantu saya ketika terminal saya kacau dan tidak menunjukkan apa-apa. Terima kasih!set-window-option automatic-rename
.Masalah khusus yang Anda lihat berkaitan dengan nama / judul jendela 4. Kombinasi terlalu panjang (jelas) dan mengandung karakter aneh yang menyebabkan tmux untuk mengukurnya lebih pendek (sehingga gagal membatasi dengan benar bilah status untuk lebar layar) Saya tidak yakin bagaimana cara mengatur ulang (pada saya itu melacak nama proses latar depan), Anda mungkin harus menutup jendela.
sumber
^b - ,
Ctrl
-b
lalu,
.Backspace
sebentar untuk menghapus nama saat ini. Bagi saya, umpan balik visual akhirnya memperjelas bahwa seluruh nama lama telah dihapus.Ctrl-b
:
rename-window <name goes here>; ini menggunakan sistem perintah tmux alih-alih pintasan keyboard untuk perintah itu.lakukan saja ini
$ reset && tmux rename-window <new_window_name>
sumber
Memperbaiki ini untuk saya ketika sesuatu selain nama jendela rusak dan saya tidak bisa diganggu untuk mencari tahu apa itu.
sumber
tmux
mungkin hanya merupakan bagian dari masalah. Anda mungkin harus memohonstty sane
di baris perintah. Ini me-reset driver TTY di-kernel ke beberapa set nilai default yang biasanya membiarkan Anda melanjutkan. Jika driver TTY cukup kacau, Anda mungkin harus mengetikkanstty sane
"blind", yaitu, tanpa umpan balik di layar.sumber
stty sane
juga tidak memecahkan masalah. Saya memang memiliki umpan balik di layar, dalam setiaptmux
panel saya dapat mengetik dan menerima umpan balik seperti biasa, tetapi segera setelah tmux perlu menggambar sesuatu (misalnya menjalankan aplikasi baru, mengganti atau mengubah ukuran panel) bilah status bergerak ke panel ...Coba muat ulang file konfigurasi Anda?
Ctrlb, kemudian:
:source-file ~/.tmux.conf
sumber
untuk memperbaiki masalah bagi saya:
Saya baru saja membunuh panel masalah dan jendela, dan membuat jendela dan panel baru.
Di panel masalah, CTRL+ AXdan CTRL+ AC.
sumber