mencerminkan panel di antara dua jendela

14

Apakah mungkin untuk memiliki panel yang sama muncul di dua jendela berbeda dari satu sesi tmux?

Saya biasanya memiliki split horizontal tunggal di jendela utama saya dengan vim di panel atas (sekitar 80-90% dari ketinggian terminal), dan baris perintah di panel bawah tempat saya menjalankan program yang sedang saya kerjakan. Karena jendela bawahnya sangat kecil, saya sering tidak dapat melihat output kesalahan, dan menggunakan pintasan keyboard tmux untuk menggulir kembali semakin melelahkan. Saya ingin memiliki jendela kedua saya lampirkan ke panel yang sama sehingga jika saya perlu melihat lebih banyak dari output kesalahan saya, saya bisa dengan cepat beralih ke jendela kedua tanpa harus berurusan dengan scrollback. Apakah ini mungkin?

(Saya kira satu fallback akan menggunakan sesuatu seperti tee untuk menulis stdout ke file log dan menambahkannya di jendela kedua saya. Saya berharap itu tidak perlu)

Will Norris
sumber

Jawaban:

7

Secara default, Anda dapat beralih "negara zoom" panel dengan menekan Prefixdan z(awalan default adalah Ctrl+B).

Ini akan membuat panel saat ini (panel baris perintah Anda, misalnya) menempati seluruh jendela. Tekan Prefixdan zlagi untuk "unzoom" panel.

Kusalananda
sumber
10

Saya khawatir ini adalah salah satu hal yang tidak dapat Anda lakukan tmux(saya berharap masalah dengan satu panel ditampilkan di beberapa ruang dengan ukuran berbeda menjadi alasan utama). Namun, ada beberapa cara untuk mengatasinya - semua didasarkan pada pengikatan tindakan tertentu ke beberapa kombinasi tombol. Karena banyak tergantung pada tata letak yang Anda gunakan, hanya memiliki tata letak sederhana dengan dua panel yang Anda sebutkan membuat hidup Anda lebih mudah

  1. rotate-window - itu hanya akan menukar panel, sehingga memberi Anda 80% -90% untuk output perintah (dan jendela kecil untuk ViM).

  2. break-pane vs. join-pane -v -p <preview_percentage> -t !

  3. pipe-panedengan commandmenjadi redirection unbuffered ke pipa bernama (yaitu node sistem file dibuat dengan mkfifo) - kemudian gunakan tail -fpipa bernama itu di panel lain.

  4. pipa keluaran ke less, yang juga memiliki mode ikuti yang tailmemiliki (setidaknya satu GNU).

  5. resize-pane -Zpada panel yang lebih kecil akan memperbesarnya pada terminal penuh. Un-zoom selanjutnya akan membuatnya aktif sehingga sedikit tipu daya diperlukan untuk membuatnya bekerja dengan nyaman.

peterph
sumber
2
BTW - "Saya berharap masalah dengan satu panel ditampilkan di beberapa ruang dengan ukuran berbeda menjadi alasan utama" Itu mungkin menjadi faktor dalam kompleksitas penerapannya, tetapi tmux tidak mendukung hal yang sama di tingkat jendela, melalui pengelompokan sesi unix.stackexchange.com/questions/24274/… . Itu hanya menambahkan padding di bawah ini ke jendela yang lebih kecil. Secara teoritis pane mirroring dapat dilakukan dengan cara yang sama.
mahemoff
Hm ... Anda benar, itu bisa menjadi cara untuk melakukannya.
peterph
1

Anda dapat menggunakan skrip untuk menampilkan sesi semu Anda ke file dan kemudian tailfile itu di jendela kedua.

Di panel kerja Anda.

script -f tailme.out

Dan di panel tampilan Anda.

tail -f tailme.out
slimisjim
sumber
1

Saya setuju dengan yang lain bahwa untuk kasus Anda Prefix+ zakan menjadi solusi paling langsung, tetapi untuk pertanyaan umum tentang mirroring a pane ada sedikit retasan yang bisa bekerja - bersarang sesi layar di dalam tmux.

Instal layar gnu, lalu mulai untuk panel yang ingin Anda mirror. Lalu screen -xuntuk memasang di panel lain.

Anda juga bisa membuat sarang sesi tmux lain di panel jika Anda mau, tetapi sesi tmux harus disarangkan dengan hati-hati.

Matius
sumber