Situasi tipikal mungkin:
$ tmux
[0] $ ssh example.com
$ tmux attach
[0] $
Saya membuka sesi tmux, lalu ssh masuk ke server dan melampirkan ke sesi tmux yang ada. Pada titik ini saya memiliki satu sesi tmux di dalam yang lain. Bagaimana cara mengirim perintah ke sesi tmux bagian dalam?
Catatan: Kedua sesi tmux memiliki key binding yang sama.
Jawaban:
The
send-prefix
perintah dapat digunakan untuk mengirim awalan keystroke ke (proses berjalan di) panel aktif Anda. Secara default, awalannya adalah Cb dan Cb terikat kesend-prefix
(sehingga memukulnya dua kali mengirim satu Cb ke panel aktif). Inilah yang kita butuhkan untuk mengakses binding dari instance tmux bagian dalam .Cb pertama ditangkap oleh instance tmux "luar" sebagai kunci awalannya. Yang kedua ditangkap oleh instance tmux "luar" dan memicu pengikatan Cb -nya (
send-prefix
). Ini mengirimkan Cb ke panel aktif instans luar. Proses yang berjalan di panel ini adalah (pada akhirnya, melalui instance ssh ) instance tmux "dalam" . Ini menangkap Cb sebagai kunci awalannya. Sekarang penekanan tombol Anda berikutnya akan diteruskan melalui contoh tmux luar dan ditangkap oleh yang dalam untuk memicu pengikatan.Untuk memicu pengikatan c (
new-window
) dalam instance tingkat kedua dari tmux , Anda harus mengetik Cb Cb c . Untuk instance tingkat ketiga dari tmux Anda harus mengetik Cb Cb Cb Cb c .Penggandaan untuk setiap level ini dapat mengganggu jika Anda biasanya berurusan dengan banyak lapisan tmux . Jika Anda dapat menyisihkan beberapa kunci lain, Anda dapat membuat pengikatan non-prefiks untuk membuat segalanya (mungkin) lebih mudah untuk diketik:
Buat jendela baru di tmux tingkat kedua : C- \ c
Buat jendela baru di tmux tingkat ketiga : C- ^ c (atau C- \ C- \ c )
Jika Anda memiliki sejumlah perintah tmux yang ingin Anda (dengan mudah) kirim ke instans tmux tingkat rendah , Anda dapat menggunakan
send-keys
untuk membuat beberapa binding tertentu (mungkin hanya di instance tmux tingkat atas Anda ):Buat jendela baru di tmux tingkat kedua : Cb Cc
Buat jendela baru di tmux tingkat ketiga : Cb C
sumber
last-window
yang mengikat seperti yang disebut ketika melakukanC-a C-a
, seperti:#bind-key C-a last-window
. Perhatikan awalan sayaa
, bukan defaultb
.bind-key -n C-\ send-prefix
tidak bekerja. Tmux saya tidak mengenali \. Saat saya menggunakan surat, itu berhasil.tmux bind-key -n 'C-\' send-prefix
); jika Anda mengalami masalah dalam menjalankannya~/.tmux.conf
(atau:
baris perintah Awalan ), maka Anda dapat mencoba mengutip yang serupa (yaitubind-key -n 'C-\' send-prefix
).Untuk mengakses bagian dalam, tahan kontrol dan tekan B dua kali.
sumber
EDIT:
Saya TIDAK merekomendasikan penggunaan
C-q
sebagai tombol pengikat, karena ini adalah perintah tombol kontrol default untukSituasi terjadi di sini , dan @Paschalis memberikan solusi:
Di bawah ini adalah jawabannya:
Untuk membuatnya sederhana, tambahkan baris di bawah ini pada file
~/.tmux.conf
Kemudian Anda dapat langsung menggunakan
C-q
sebagai kunci pengikat untuk tmux jarak jauh Anda.sumber