Saya pikir Memindahkan panel tmux ke jendela adalah pertanyaan yang sama tetapi sepertinya tidak.
Berasal dari menggunakan layar GNU secara teratur, saya mencari tmux untuk melakukan hal yang sama. Salah satu hal yang saya lakukan secara teratur adalah membuka beberapa jendela berbeda, satu dengan beberapa kode terbuka di vim, dan beberapa terminal terbuka untuk menguji kode, dan kadang-kadang satu atau dua jendela untuk berbagai hal lainnya. Saya membagi layar secara vertikal dan akan sering memiliki jendela vim di panel atas dan kemudian salah satu jendela lain di bane bawah.
Perintah utama yang kemudian saya gunakan adalah Ctrla, Tabuntuk memutar di antara panel dan Ctrla, nuntuk memutar antara jendela di dalam panel. Misalnya, dengan vim di panel atas, saya beralih ke panel bawah dan kemudian memutar melalui terminal lain, melakukan apa pun yang saya butuhkan. Layar tetap terbelah sepanjang waktu.
Masalahnya adalah saya tidak dapat menemukan kemampuan yang sebanding dengan layar Ctrla, ndi tmux. Mengganti jendela tampaknya tidak berfungsi di dalam panel, tetapi melompat seluruhnya. Jika layar terpecah, hanya dua pilihan yang tampaknya melompat ke beberapa jendela yang tidak terpecah dan kemudian membelahnya atau untuk melakukan sub-split panel. Tidak juga yang saya cari.
Saran (selain hanya bertahan dengan layar)?
sumber
tmux
sebuah jendela dapat dibagi menjadi beberapa panel. Apakah Anda mencoba untuk menggilir antara panel di jendela dengan keybind?swap-pane
? Jika Anda ingin meniru layarCtrl-a n
, maka setara tmux adalahCtrl-b n
.Jawaban:
tmux dan layar memiliki model yang berbeda sehingga tidak ada padanan yang tepat.
Dalam istilah layar , pemisahan memungkinkan Anda menampilkan beberapa jendela secara bersamaan.
next
(C-a n
) memutar jendela melalui bagian aktif perpecahan; ini memungkinkan Anda memutar jendela "tersembunyi" melalui wilayah aktif perpecahan.Dalam istilah tmux , split membagi sebuah jendela menjadi satu atau lebih panel. Setiap bagian dari jendela terbagi adalah panel individu, panel tidak pernah disembunyikan (jika jendela dipilih (terlihat) semua panelnya juga), dan panel hanya dapat digunakan dalam satu split dari satu jendela (panel dapat tidak berada di banyak jendela, dan itu tidak bisa di banyak jendela yang sama). Ada perintah untuk memindahkan panel di dalam (atau di antara) jendela, tetapi tidak dengan cara yang sama dengan
next
di layar .Anda dapat menggunakan penjilidan seperti berikut untuk mengatur efek yang serupa:
Anda mungkin ingin meletakkan ini di
~/.tmux.conf
file Anda , tetapi Anda bisa mengetik / menempelnya setelah Prefix :mengikatnya di server Anda saat ini.Untuk menggunakan penjilidan, pilih "jendela utama" Anda, pisahkan, buat jendela "pane container" segera setelah "jendela utama", lalu gunakan penjilidan untuk memutar panel di "jendela utama" di antara grup di "jendela utama". jendela pane container ”.
Inilah cara Anda membuat pengaturan:
Pilih jendela untuk digunakan sebagai "jendela utama" Anda. Mulai (mis.) Vim di dalamnya.
Bagi "jendela utama" Anda menjadi dua panel.
Misalnya Prefix "(
:split-window
)Anda dapat menggunakan panel ini sebagai jendela pengujian Anda (atau penampil log, atau apa pun).
Buat jendela baru ("wadah pane") segera setelah jendela utama Anda.
Misalnya Prefix c(
:new-window
)Penting bahwa tidak ada jendela lain yang berada di antara indeks "jendela utama" dan jendela "wadah pane" (
+
dalam penspesifikasi jendela yang digunakan dalam perintah terikat berarti "jendela bernomor lebih tinggi berikutnya").Membagi jendela ini menjadi beberapa panel. Untuk memutar melalui tiga panel, bagi jendela ini menjadi dua panel (panel ketiga adalah yang ada di "jendela utama").
Mungkin Anda membutuhkan shell untuk git , dan shell untuk menjalankan antarmuka database. Letakkan masing-masing di panel terpisah di jendela "wadah wadah" ini.
Beralih kembali ke "jendela utama" Anda. Pilih panel yang ingin Anda “putar”.
Anda dapat menggunakan Prefix Up/ Down/ Left/ Rightuntuk bergerak di antara panel.
Aktifkan ikatan untuk menukar panel saat ini dengan panel pertama di jendela "wadah wadah" dan ("di belakang layar") memutar panel di dalam jendela "wadah wadah" (sehingga saat berikutnya Anda menjalankan penjilidan, perintah pertama swap dengan panel "selanjutnya" dalam urutan).
Prefix Control- n(penggunaan mengikat Cn, tetapi Anda bisa mengubahnya ke apa pun yang Anda suka).
Untuk menggulir mundur melalui panel, Anda dapat menggunakan di bawah ini:
sumber
resize-pane -Z
(secara default, terikat ke Awalan + z) yang sementara "memperbesar" panel menjadi ukuran penuh jendela. Untuk versi sebelum 1.8, tidak ada cara bawaan untuk melakukannya; yang lain telah membuat solusi skrip dari perintah bawaan lainnya (misalnya beberapa jawaban untuk pertanyaan SU "Memaksimalkan" panel di tmux ).C-b o
siklus siklus.Saya percaya apa yang Anda cari adalah Ctrlb+ ( →, ←, ↑, ↓). Itu akan memungkinkan Anda untuk bergerak di antara panel.
sumber
Ctrl-b+{
atauCtrl-b+}
? Itu sedekat yang saya bisa temukan dengan fungsi itu. Pane tidak dilakukan dengan cara yang sama dalam tmux karena mereka ditangani di layar.^b↑
. Bagaimana cara memfokuskan panel yang disorot sedemikian rupa sehingga orang lain↑
akan ditangkap oleh shell, bukan tmux?gunakan
bind -r
, sehingga Anda dapat menekan satuprefix
kali, lalu tombol lainnya secara berurutan untuk menemukan panel Anda. Batas waktu dapat disesuaikan denganrepeat-time
. Memeriksaman tmux
Jika Anda lebih suka
hjkl
,sumber
Berikut adalah conf kecil yang memungkinkan Anda untuk pindah ke panel atau jendela anohter dengan menggunakan pintasan ALT atau panah SHIFT +. Tidak perlu menggunakan awalan kunci yang nyaman.
Jika Anda lebih malas dari saya, Anda juga bisa tertarik dengan kode berikut yang memungkinkan navigasi panel dengan mouse. (penggunaan: awalan kunci + m untuk menghidupkan, M untuk mematikannya)
konfigurasi ini seharusnya berfungsi untuk tmux 1.6 hingga 1.9.
sumber
Jawaban ini memberi Anda dua panel, di mana kedua panel memegang set jendela yang sama, tetapi setiap panel dapat beralih di antara jendela secara independen.
Pendekatan tmux adalah menggunakan tiga sesi:
Ya, ini adalah filosofi UNIX yang menjadi gila. Mari kita mulai:
Sekarang Anda dapat beralih ke panel atas dan membuka Vim seperti biasa. Untuk menggilir jendela di sesi dalam (panel bawah), Anda harus menggunakan Ctrl-b Ctrl-b ndan p.
OK sekarang, alih-alih membuka Vim di panel atas, mari kita terhubung lagi ke sesi batin Anda. Keluar dari vim, dan kali ini gunakan
new-session
perintah (terutama dengan-t
tidak-s
):Voila! Sekarang Anda dapat menggilir jendela di panel atas dan bawah.
Alasan kita harus menggunakan
new-session -t
kedua kalinya adalah bahwa jika kita hanya melakukanattach -t
lagi, maka panel atas dan bawah akan disinkronkan, selalu menampilkan jendela yang sama, yang bukan yang Anda inginkan. Untuk membiarkan panel ini bergerak melalui jendela secara independen dari panel lainnya, kami membuat sesi "tampilan" baru tetapi menghubungkan ujung belakangnya langsung ke sesi yang ada yang memegang jendela. Ini juga dikenal sebagai " sesi dikelompokkan ". (Omong-omong, tautan itu juga menyarankan penggunaan[un]link-window
untuk memindahkan windows di antara sesi.)Tentu saja untuk simetri, Anda bisa menjalankan
tmux new-session -t inner
di panel bawah juga, bukanattach
. Dalam hal ini Anda akan menjalankan 4 instance tmux (plus satu lagi proses tmux untuk server)!sumber
Masukkan kode berikut ke dalam
.tmux.conf
:Reload config, lalu Anda dapat menekan (langsung tanpa kunci awalan) Shift+ →untuk menggilir panel ke arah searah jarum jam, dan Shift+ ←untuk menggilir ke arah yang terbalik.
Diuji dalam Tmux 2.8.
Jika Anda tidak ingin mengedit konfigurasi, prefix+ oadalah kunci default yang mengikat untuk siklus searah jarum jam. Saya kadang-kadang menemukan kunci ini mengikat, kemudian saya mendapatkan perintah dari
tmux list-keys
dan menggunakannya untuk binding kunci saya sendiri:sumber