Tmux: Bagaimana saya bisa menautkan jendela sebagai jendela terpisah?

33

bagaimana saya bisa mengambil jendela dari sesi tmux yang sama sekali berbeda dan melampirkannya sebagai split horizontal / vertikal ke jendela saat ini?

pielgrzym
sumber

Jawaban:

45

Kedengarannya seperti Anda sedang mencari panel bergabung. Secara teknis untuk bagian kedua dari pertanyaan Anda, Anda ingin bergabung dengan panel ke jendela saat ini, bukan jendela penuh dari sesi lain karena itu dapat mencakup beberapa panel.

Ini sebuah contoh. Katakanlah Anda berada di sesi 0, jendela 4 dan di sesi 2 bahwa Anda menginginkan panel jendela 3 1. Pada prompt tmux ( ctrl+b :secara default)

join-pane -s 2:3.1

Ini akan memindahkan panel 1 dari jendela 3, sesi 2 (-s adalah jendela sumber dan mengambil sesi format: window.pane) ke sesi Anda saat ini (sesi 0).

Di bawah ini adalah dokumen lengkap untuk panel bergabung, yang bisa Anda dapatkan dari halaman manual tmux. Bagian yang paling membingungkan bagi saya membaca dokumen adalah mencari tahu format yang diharapkan untuk sesi menentukan src-pane, jendela dan nomor panel ( session:window.paneper contoh di atas). Anda juga dapat memberi nama sesi dan jendela Anda dan menggunakan nama-nama itu alih-alih nomor indeks.

 join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane]
   (alias: joinp)
   Like split-window, but instead of splitting dst-pane and 
   creating a new pane, split it and move src-pane into the 
   space.  This can be used to reverse break-pane.
mmrobin
sumber
9
Bisakah saya menyalin panel alih-alih memindahkannya?
pielgrzym
@pielgrzym Saya ingin tahu jawabannya juga. Silakan posting di sini jika Anda menemukannya.
Bruno Bronosky
Saya pikir OP sedang mencari sesuatu yang lebih seperti link-pane, yang sayangnya tidak ada. Rupanya perilaku yang diminta dapat ditiru menggunakan soket nested tmux, seperti yang dijelaskan di sini: superuser.com/a/323658
syarat
16

Jika Anda mencoba untuk bergabung dengan panel dari dalam sesi yang sama, Anda secara naluriah ingin menghilangkan "sesi:" dari perintah. Ini akan gagal. Tampaknya -s dan -t beralih untuk bergabung-panel menerima argumen dalam bentuk [sesi]: window [.pane] alih-alih [session:] window [.pane]

Dengan kata lain, sesi ini opsional dan: wajib diisi. Ini konyol. Ini akan menjadi setara dengan browser yang membutuhkan http://google.com:/ sebagai versi pintas dari http://google.com:80/ dan memberikan kesalahan pada http://google.com/ o_O

Sejak ctrl-b! memecah panel saat ini menjadi jendela terpisah (yang merupakan kebalikan dari apa yang ingin kita lakukan), dan ctrl-b @ (yang berada tepat di sebelah!) tidak terikat secara default (artinya Anda tidak menimpa apa pun) Saya sarankan membuat pintasan ini ...

bind-key @ command-prompt -p "create pane from:"  "join-pane -s ':%%'"
Bruno Bronosky
sumber
Bagus mengikat di sana.
Nishant