Bagaimana Anda menyembunyikan panel tmux?

60

Saya memiliki 3 panel di jendela tmux saya:

--------------------------
|             |      2   |
|             |          |
|        1    |----------|
|             |      3   |
|             |          |
--------------------------

Panel 1 dan 2 miliki vim. Pane 3 menjalankan cli yang saya kembangkan. Terkadang saya ingin membandingkan panel 1 dan 2, jadi saya ingin menyembunyikan panel 3:

--------------------------
|             |          |
|             |          |
|        1    |       2  |
|             |          |
|             |          |
--------------------------

dan kemudian bawa kembali panel 3 lagi. Saya tidak ingin membunuh panel 3 karena saya telah mengatur beberapa hal di sana dan tidak ingin pergi meskipun mengaturnya lagi.

  • Apakah ada sesuatu yang mirip dengan PREFIX + zyang dapat memperbesar panel 2 tetapi tanpa menyentuh panel 1? Atau
  • Apakah ada cara untuk menyembunyikan panel 3 dengan cepat dan membawanya kembali saat diperlukan?
pengguna881300
sumber

Jawaban:

71

Gunakan perintah break-panedan join-pane. Lihat man tmuxdetail, opsi, dan penggunaan.


Sembunyikan Panel 3:

Pilih panel 3dan masukkan Prefix- :break-pane -dP.

tmuxakan mengirim panel 3ke jendela di latar belakang ( -dbendera) dan mencetak beberapa informasi tentangnya di panel 2 ( -Pbendera). Secara default Anda akan melihat sesuatu seperti 1:2.0(artinya:) session:window.pane. Hit quntuk terus bekerja. 1

1 Dengan beberapa latihan Anda akan dapat menjatuhkan -Pflag karena Anda dapat memprediksi session:window.panetriplet: sessiondefault ke sesi saat ini dan panedefault untuk 0sementara windowakan menjadi pengidentifikasi jendela gratis berikutnya.

Dapatkan Pane 3 kembali:

Untuk mendapatkan panel 3dan tata letak kembali, pilih panel 2dan masalah Prefix- :join-pane -vs 1:2.0mengatakan tmuxuntuk membagi panel 2secara vertikal ( -v) dan untuk bergabung dengan panel (sumber) ( -s) dengan pengidentifikasi 1:2.0. Secara opsional, Anda dapat menjatuhkan sessionatau panepengidentifikasi. Perhatikan juga bahwa tmux menyimpan riwayat baris perintah, mudah diakses dengan Prefix- :- Up.

Anda mungkin perlu waktu untuk menguasainya, tetapi begitu Anda melakukannya, Anda pasti akan dapat membuat binding kunci kustom yang nyaman bagi Anda.


Pertanyaan ini berisi beberapa informasi dan trik bermanfaat yang dapat meningkatkan alur kerja Anda.

pengguna78291
sumber
Instruksi yang jelas! Bekerja dengan lancar untuk saya, jauh lebih baik daripada jawaban saya!
Bernhard
Secara default, panel 3 akan dipecah menjadi jendela terakhir, jika Anda sudah memiliki 3 jendela di sesi saat ini, panel akan menjadi Jendela 3 (menganggap jendela dimulai dari 0), sehingga 3 dalam "Jendela 3" tergantung pada jendela yang terbuka, bagaimana saya bisa membuat ini bekerja di binding kunci dikustomisasi?
CodyChan
5

Sebuah ide: jalankan tmux di tmux.

Pengaturan asli:

Panel 1 dan panel 2; bersebelahan. Jalankan vim di Pane 1 seperti biasa.

Di panel 2, jalankan tmux lagi dan buat dua panel (satu di atas yang lain kali ini). Kemudian jalankan vim di panel 2.1 dan CLI Anda di panel 2.2. Ini akan memungkinkan Anda untuk panel layar penuh 2.1 dengan instance Vim kedua Anda menghasilkan perilaku yang Anda inginkan.

BinaryBen
sumber
inilah yang saya sebut berpikir di luar kotak!
user881300
Terima kasih user881300. Ini memiliki beberapa kelemahan (bisa mengirim perintah memiliki beberapa kebiasaan misalnya). Saya berharap untuk memperbarui ini menjadi jawaban yang lebih lengkap setelah saya mengujinya - saya membutuhkan fungsionalitas serupa sendiri.
BinaryBen
2
@ user881300 Secara teknis, ini adalah kotak berpikir.
Mateen Ulhaq
3

Alih-alih menyembunyikan panel 3, Anda juga bisa sedikit curang, dan membuatnya sangat kecil, yang mungkin juga cocok untuk kasus Anda.

Ketika panel 2 adalah panel aktif yang Anda bisa

PREFIX : resize-pane -D 40

Kemudian, untuk memindahkannya lagi, Anda bisa

PREFIX : resize-pane -D 28

di mana Anda harus mengganti 28 dengan angka yang layak, atau, sebaliknya, Anda bisa mencoba PREFIXEsc4, yang mengubah ukuran otomatis.

Bernhard
sumber
Saya mengubah ukuran panel menggunakan set -g mouse-resize-pane ontetapi selain mengubah ukuran apakah kami memiliki opsi lain?
user881300
@ user881300 Saya bukan tmuxahli dengan cara apa pun, tapi saya ingin tahu apakah ini mungkin.
Bernhard
1
CTRL+B, ALT+<arrow direction to resize>, daripada CTRL+B, ESC, 4(thx @Bernhard) untuk mengembalikannya.
FelikZ
1

Saya sekarang pertanyaan ini sudah hampir 5 tahun tetapi saya baru saja menemukannya karena saya ingin melakukan sesuatu yang serupa dan saya datang dengan keybindings berikut berkat jawaban user78291 :

bind-key ! break-pane -d -n _hidden_pane
bind-key @ join-pane -s $.1

Dengan cara ini, saya dapat menggunakan Prefix!untuk menyembunyikan panel saat ini dan Prefix@membawanya kembali. Bagian yang bagus adalah saya bisa menyembunyikan banyak panel dengan cara ini.

Jauh dari sempurna, tetapi berhasil menyembunyikan panel dan mengembalikannya dengan cukup baik.

Filipe Kiss
sumber
0

Saya tahu ini tidak benar-benar menyembunyikan panel yang sedang Anda kerjakan tetapi saya mencoba melakukan ini untuk menghentikan tmux dari mengirim perintah umum ke jendela yang dipilih dan mendapatkan solusi yang jauh lebih sederhana.

Jika Anda tidak ingin menyembunyikan panel secara visual tetapi hanya ingin menghentikan input yang masuk ke panel. Skenario bisa berupa Anda ingin mengirim perintah ke 5 panel terbuka tetapi tidak ingin mengirimnya ke 2 panel.

Dalam kasus penggunaan ini, Anda dapat melakukan ctrl + spada panel yang Anda tidak ingin perintah untuk pergi ( ctrl + smengunci semua input ke panel).

Setelah selesai, tekan ctrl + cuntuk kembali.

Catatan : Jangan tekan ctrl + qsetelah perintah karena akan menjalankan semua perintah di layar itu. ctrl + ctidak akan melakukan ini (coba ini di Ubuntu).

Jon Skeet Palsu
sumber