Layar GNU dan Tmux: tips dan trik

8

Jadi saya adalah penggemar berat multiplexer seperti GNU Screen dan Tmux , tetapi bahkan menggunakan Screen selama bertahun-tahun sekarang saya masih mengakui bahwa ada banyak hal yang tidak saya ketahui (dan saya hanya menggunakan Tmux selama beberapa bulan jadi ini lebih buruk. ).

Konfigurasi dan tip serta trik apa yang Anda gunakan pada perangkat lunak tersebut (keduanya atau masing-masing, tidak masalah)?

Saya menggunakan ini sebagai konfigurasi layar saya (saya pikir saya mengadaptasi ini dari default Ubuntu screenrc):

shell -$SHELL
startup_message off
defscrollback 1000
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %m/%d %C%A'
activity ''
termcapinfo xterm* 'hs:ts=\\E]2;:fs=\\007:ds=\\E]2;screen\\007'

Ini konfigurasi sederhana untuk menjaga bilah status tampil dengan beberapa warna, tetapi saya yakin bahwa ada lebih banyak hal yang dapat saya lakukan dengan layar dan Tmux dan akan senang mengetahuinya.

coredump
sumber
zombie qrmenjaga jendela tetap terbuka meskipun proses mati dan memungkinkan quntuk menutupnya atau rmenghidupkan kembali proses. Berguna untuk verifikasi perangkat lunak.
Ency

Jawaban:

4

Ini mungkin agak sederhana untuk kerumunan ini, tetapi saya merasa berguna untuk menambahkan ini ke akhir. Profil, sehingga ketika saya login jarak jauh melalui ssh, saya bisa membaca MOTD, lalu beralih ke layar.

if [ -n "$SSH_TTY" ]
then
        read -p "Press <ENTER> to continue." enterkey
        exec /usr/bin/screen -D -R
fi
bgvaughan
sumber
3

Saya punya ini di .bashrc saya. Jika Anda tidak menjalankan layar, fungsi ini hanya memanggil sshseperti biasa ketika dijalankan. Jika Anda menjalankan layar bagian dalam (dan Anda belum mengubah default $TERM), pertama-tama set nama jendela ke host jarak jauh (bersama dengan parameter opsional apa pun). Sangat berguna untuk melacak koneksi jarak jauh ketika Anda memiliki banyak yang terbuka, yang sering terjadi dalam pekerjaan kami.

function ssh () {
if [ $TERM = "screen-bce" ]
    then
    screen -X title "$*" 
    /usr/bin/ssh $*
else
    /usr/bin/ssh $*
fi
}

Saya juga menggunakan bind ^A windowlist -buntuk akses mudah ke daftar jendela (cukup ketuk ctrl-A dua kali).

Dukungan ssh-agent mudah untuk semua windows:

setenv SSH_AUTH_SOCK $HOME/.screen-ssh-agent
screen 10 ssh-agent -a $SSH_AUTH_SOCK $SHELL

Kemudian di jendela mana pun Anda melakukan ssh-add hanya sekali ketika Anda memulai sesi baru.

Terakhir, ketika melampirkan sesi layar jauh dari dalam sesi layar lain, Anda dapat menggunakan screen -x -e ^Vvuntuk mengatur urutan kontrol ke CTRL-V (misalnya). Ini menghindari keharusan untuk rantai CTRL-As untuk mengontrol sesi jarak jauh.

Eduardo Ivanec
sumber
0

Anda dapat mempertimbangkan byobu , yang pada dasarnya adalah kumpulan dari ratusan tips, trik, konfigurasi, keybindings, skrip status, dan praktik terbaik yang berorientasi screendan sekitar tmux.

Dustin Kirkland
sumber
0

Meskipun saya mulai menggunakan tmux untuk panel, saya masih menggunakan layar untuk multiplex windows. tmux seharusnya memiliki fungsi ini, tetapi menukar panel dari satu jendela ke jendela lainnya tidak intuitif bagi saya, juga tidak dapat dua pemirsa tmux yang terpasang melihat jendela yang berbeda dalam daemon yang sama (perilaku layar-x), sehingga solusi layar-dalam-tmux. Ini adalah dua ikatan tmux.conf yang membutuhkan waktu paling lama untuk mencari tahu dan saya gunakan setiap hari.

Pertama, ikat M (ctrl-b shift-M), matikan tmux antara mouse-pane-picker dan mouse highlight / copy. Anda masih dapat menyalin / menempel dalam mode pane-pick, tetapi Anda harus menahan shift (dan jika Anda terbiasa dengan hal itu, salin / tempel dalam aplikasi lain akan membuat Anda sedikit sengsara, izinkan saya memberi tahu Anda). Makro juga membuatnya jelas secara visual mode mana yang saat ini dipilih.

bind M set mouse-select-pane \; if '[ "`tmux show -v mouse-select-pane`"= "on" ]' "set status-bg cyan \; set pane-active-border-bg cyan" "set status-bg green \; set pane-active-border-bg default"

Yang kedua, ikat CL (ctrl-b ctrl-l), akan mengambil tata letak 4 panel dan mengubahnya menjadi tata letak pilihan saya. Sering kali, saya akan menemukan saya menekan ctrl-d di panel yang saya pikir ada di dalam layar untuk menutupnya, tetapi sebaliknya tidak ada sesi layar dan menutup panel. Karena tata letak saya adalah v-split, h-split, v-split dan beberapa pengubahan ukuran, jika saya secara tidak sengaja menutup jendela mana pun kecuali yang terakhir, itu menjadi menyakitkan (tidak ada permainan kata-kata) untuk menutup panel perantara di antara panel yang saya perlukan untuk membuat ulang dan yang terakhir, lalu buat ulang dan ubah ukuran panel, dan akhirnya pasang kembali setiap sesi layar yang mungkin harus saya lepaskan saat membunuh panel. Dengan makro ini, saya dapat membuat panel baru, ctrl-b {(bind default untuk swap-pane -U) sampai kembali dalam urutan yang benar, lalu tekan makro dan semuanya kembali normal. Layout pilihan saya kemungkinan tidak sama dengan milik Anda,list-windows perintah untuk mendapatkan string tata letak seperti di bawah ini.

bind C-L select-layout a18e,155x94,0,0[155x18,0,0,6,155x75,0,19{81x75,0,19,31,73x75,82,19[73x22,82,19,32,73x52,82,42,33]}]

Jika itu terlalu naif untuk selera Anda, selalu ada tuxuxator untuk manajemen panel.

Andrew Domaszek
sumber