Ekrandaki gibi tmux'ta bir pencerenin içindeki bölmeler arasında nasıl dolaşırım?


41

Smc penceresini pencereye taşımanın aynı soru olduğunu düşünmüştüm ama görünmüyor.

Düzenli olarak GNU ekranını kullanmaktan, aynı şeyleri yapmak için tmux'u arıyorum. Düzenli olarak yaptığım işlerde, bir kısmı açık kodlu, bir kısmı açık kodlu, bir kısmı da açık pencereli bir kaç tane terminal penceresi açık, bazıları da çeşitli şeyler için bir ya da iki tane açık pencereye sahip. Ekranı dikey olarak böldüm ve çoğunlukla üst panelde vim penceresine, sonra da alt penceredeki diğer pencerelerden birine sahip olacağım.

Sonra kullanımı olan ana komutlar Ctrla, Tabbölmeler arasında döndürmek ve Ctrla, nbir bölmesinde pencereler arasında döndürülmesi. Mesela, üst bölmedeki vim ile alt bölmeye geçiyorum ve sonra diğer terminaller arasında dönerek ihtiyacım olanı yapmaktayım. Ekran her zaman bölünmüş kalır.

Sorun şu ki Ctrla, ntmux'taki ekranlarla karşılaştırılabilir bir yetenek bulamıyorum . Pencereleri değiştirmek bir bölmenin içinde çalışmaz, ancak tamamen atlar. Ekran bölünmüşse, yalnızca iki seçenek bölünmemiş bazı pencerelere atlamak ve sonra bölmek veya bir bölmenin alt bölmesini yapmak gibi görünmektedir. Ben de aradığım şey değildi.

Öneriler (sadece ekrana yapıştırmanın yanı sıra)?


Terminolojiniz biraz kafa karıştırıcı. Gelen tmuxbir pencere birden bölmeleri bölünebilir. Klavye ile pencerelerde tuşlar arasında geçiş yapmaya mı çalışıyorsunuz?
jasonwryan

Aletlerin adlandırılmasını izlemeye çalışıyordum, ama kafa karıştırıcı olduğunu itiraf ediyorum. Odağı bir bölmeden diğerine nasıl değiştireceğimi biliyorum. Bulmaya çalıştığım şey, belirli bir bölmede görüntülenenleri, düzeni başka türlü değiştirmeden nasıl döngülendirmektir.
FooBar

Yani içeriği bir bölmeden diğerine taşımak için? Arıyor musun swap-pane? Ekranları taklit etmek istiyorsanız Ctrl-a n, o zaman tmux eşdeğeri Ctrl-b n.
jasonwryan

Yanıtlar:


28

tmux ve ekran kesin eşdeğer olduğu çok farklı modelleri var.

Gelen ekran terimler, bölünmüş aynı anda birden fazla pencere görüntülemenizi sağlar. next( C-a n) pencereleri bölmenin aktif kısmı boyunca döndürür; Bu, “gizli” pencereleri bölmenin aktif bölgesi boyunca döndürmenizi sağlar.

Gelen tmux açısından, bir bölme, bir ya da daha fazla pano içine bir pencere ayrılır. Bölünmüş pencerenin her bölümü ayrı bir bölmedir, bölmeler asla gizlenmez (bir pencere seçiliyse (görünür), tüm bölmeleri de) ve bir bölme yalnızca bir pencerenin tek bir bölmesinde kullanılabilir (bölme olabilir birden fazla pencerede olamaz ve aynı pencerenin birden fazla bölmesinde olamaz). Benzer bir şekilde yaklaşık pencerelerde (ya da arasında) hareket bölmeleri komutları, fakat bununla vardır nextolarak ekran .


Benzer bir etki düzenlemek için aşağıdaki gibi bir bağlayıcı kullanabilirsiniz:

bind-key C-n swap-pane -s :+.top \; rotate-window -Ut :+

Muhtemelen bunu ~/.tmux.confdosyanıza koymak isteyeceksinizdir , ancak Prefix :geçerli sunucu örneğinize bağlamak için yazıp / yapıştırmanız yeterlidir.

Bağlamayı kullanmak için “ana pencerenizi” seçin, ayırın, “ana pencereden” hemen sonra bir “bölme kabı” penceresi oluşturun, ardından “ana penceredeki” herhangi bir bölmeyi “ana pencerede” “ Bölme kabı ”penceresi.

Kurulumu şu şekilde oluşturabilirsiniz:

  • “Ana pencere” olarak kullanmak için bir pencere seçin. İçinde Vim (örneğin) Başlat .

  • “Ana pencerenizi” iki bölmeye ayırın.

    Örneğin Prefix "( :split-window)

    Bu bölmeyi test pencereniz olarak kullanabilirsiniz (veya log görüntüleyiciyi ya da her neyse).

  • Ana pencerenizden hemen sonra yeni bir pencere (“bölme kabı”) oluşturun.

    Örneğin Prefix c( :new-window)

    “Ana pencere” ve “bölme kabı” penceresinin indeksleri arasında başka bir pencerenin olmaması önemlidir ( +sınır komutlarında kullanılan pencere belirticilerinde “bir sonraki daha yüksek numaralı pencere” anlamına gelir).

  • Bu pencereyi birkaç bölmeye bölün. Üç bölmeyi döndürmek için bu pencereyi iki bölmeye ayırın (üçüncü bölme “ana penceredeki” bölmedir).

    Belki git için bir kabuk ve bir veritabanı arayüzü çalıştırmak için bir kabuk gerekir . Her birini bu “bölme kabı” penceresinde ayrı bir bölmeye koyun.

  • “Ana pencerenize” geri dönün. “Döndürmek” istediğiniz paneli seçin.

    Bölmeler arasında hareket etmek için Prefix Up/ Down/ Left/ kullanabilirsiniz Right.

  • Geçerli bölmeyi “bölme kabı” penceresindeki ilk bölmeyle değiştirmek için ciltlemeyi çağırın ve (“perde arkasında”) bölmeleri “bölme kabı” penceresinin içinde döndürün (böylece ciltlemeyi bir sonraki çalıştırdığınızda, ilk komut sekanstaki “sonraki” bölmesiyle değiştirilir).

    Prefix Control- n(bağlayıcı, Cn'yi kullanır, ancak bunu istediğiniz şekilde değiştirebilirsiniz).

  • Bölmeler arasında geriye doğru ilerlemek için aşağıdakileri kullanabilirsiniz:

bağlama tuşu Cp takas bölmesi -s: +. Döndürme Penceresi -Dt: +

Teşekkür ederim! Harika bir açıklama ve önerilen bağlayıcınız, en azından aradığım işlevi kopyalıyor gibi görünüyor.
FooBar

Affedersiniz, nasıl bir tam boyutta bir bölme olabilir ve sonra önceki düzenlemeye geri dönebilir
MageProspero

1
@JamesAndino: tmux 1.8'de resize-pane -Z(varsayılan olarak, Önek + z'ye bağlı), pencerenin tam boyutu olarak bir bölmeyi geçici olarak "yakınlaştırır". 1.8'den önceki sürümler için bunu yapmanın yerleşik bir yolu yoktu; diğerleri, diğer yerleşik komutlardan kodlanmış çözümler hazırlamışlardır (örneğin, SU sorusunu tmux'ta bir bölmeyi “maksimize etmek” için verilen cevapların bazıları ).
Chris Johnsen

ty, derlenmiş ve yüklü
MageProspero 13:13

3
C-b oDöngü panelleri olduğuna inanıyorum .
Sam Selikoff

39

Ne arıyorsun olduğuna inanıyoruz Ctrlb+ ( , , , ). Bunlar bölmeler arasında hareket etmenizi sağlayacak.


2
Üzgünüm, ama çok net değildim. Panelden panele nasıl taşınacağını anladım. Tmux'ta Ctrl b + o, ekrandaki Ctrl a + Tab ile aynı işlevi görür. Aradığım şey ekranın Ctrl a + n ile eşdeğer işlevselliktir.
FooBar

@FooBar nasıl Ctrl-b+{veya Ctrl-b+}? Bu, bu işlevselliğe bulabildiğim kadar yakın. Bölme ekran içinde işlendiği gibi tmux'da da aynı şekilde yapılmıyor.
sparticvs

Sık sık vurgulanan bölmeye odaklanmakta sorun yaşıyorum, iki bölmem olduğunu söylüyorum, sık sık basıyorum ^b↑. Vurgulanan bölmeye gerçekte tmux tarafından değil , bir başkasının kabuk tarafından yakalanmasını sağlayacak şekilde nasıl odaklanırım ?
ThorSummoner 17:16

6

kullanın bind -r, böylece prefixbölmenizi bulmak için bir kez sırayla diğer tuşlara basabilirsiniz . Zaman aşımı ile ayarlanabilir repeat-time. Kontrolman tmux

bind -r Tab select-pane -t :.+

Eğer tercih edersen hjkl,

bind -r h select-pane -L
bind -r j select-pane -D
bind -r k select-pane -U
bind -r l select-pane -R

2

ALT veya ÜST KRKT + ok kısayollarını kullanarak diğer panellere veya pencerelere geçmenizi sağlayan küçük bir conf. Anahtar önekini kullanmanıza gerek yok.

## NAVIGATION: ############################

# Switch panes 
# Usage: "ALT+arrow keys" (without prefix key)
# from https://gist.github.com/spicycode
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Switch windows 
# usage: "SHIFT+arrow" (without prefix key)
bind -n S-Left  previous-window
bind -n S-Right next-window

Eğer benden daha tembel iseniz, tavaların fareyle gezinmesini sağlayan aşağıdaki kodla da ilgilenebilirsiniz. (use: key prefix + m açmak için, M kapatmak için)

## MOUSE CONTROL: #########################
set -g mode-mouse off
set -g mouse-resize-pane off
set -g mouse-select-pane off
set -g mouse-select-window off

# Toggle mouse on 
bind m \
    set -g mode-mouse on \;\
    set -g mouse-resize-pane on \;\
    set -g mouse-select-pane on \;\
    set -g mouse-select-window on \;\
    display 'Mouse: ON'

# Toggle mouse off
bind M \
    set -g mode-mouse off \;\
    set -g mouse-resize-pane off \;\
    set -g mouse-select-pane off \;\
    set -g mouse-select-window off \;\
    display 'Mouse: OFF'

Bu yapılandırma çalışması tmux 1.6 ile 1.9 arasında çalıştığından emin olmalı.


2

Bu cevaplar, her iki bölmenin de aynı pencere kümesini tuttuğu iki bölme verir, ancak her bölme bağımsız olarak pencereler arasında geçiş yapabilir.

Tmux yaklaşımı üç seans kullanmaktır :

  • bölmeler için dış oturum ,
  • pencereler için bir iç oturum (buna bir bölmeden ekleyebilirsiniz),
  • iç oturuma ikincil bir görünüm (diğer panel için).

Evet, bu UNIX felsefesi delirdi. Başlayalım:

# Create a session to hold the multiple windows
$ tmux new-session -s inner

    <Ctrl-b> c   to create a few windows, run some things

    <Ctrl-b> d   to detach, but leave it running

# Create a session to hold multiple panes (the view)
$ tmux new-session -s outer

    <Ctrl-b> "   to split

# Open the inner session in the current (bottom) pane
$ unset TMUX ; tmux attach -t inner

Şimdi üst panele geçebilir ve Vim'i her zamanki gibi açabilirsiniz. İç oturumda pencereler arasında geçiş yapmak (alt bölmesi) Kullanmak gerekecektir Ctrl-b Ctrl-b nve p.

Bir kenara: Bu biraz hantaldır, ancak dış oturumun önekini her zaman değiştirebilirsiniz, örneğin Ctrl-a:

<Ctrl-b> :set-option prefix C-a

Sonra sadece olurdu Ctrl-b nve piç pencere döngüsü için ve Ctrl-a odış bölmeleri döngüsü için.

Tamam şimdi, üst panelde Vim'i açmak yerine, iç oturumunuza tekrar bağlanalım. Vim'den çıkın ve bu sefer bir new-sessionkomut kullanın (özellikle -tdeğil -s):

$ tmux new-session -t inner

İşte bu kadar! Şimdi hem üst hem de alt panellerdeki pencereler arasında geçiş yapabilirsiniz.

new-session -tİkinci kez kullanmamızın sebebi attach -t, tekrar yapmamız gerekirse , üst ve alt panellerin senkronize edilmesi, her zaman aynı pencereyi göstermesidir; Bu bölmenin pencerelerden diğer bölmeden bağımsız olarak hareket etmesini sağlamak için, yeni bir "görüntüleme" oturumu oluştururuz, ancak arka ucunu doğrudan pencereleri tutan mevcut oturuma bağlarız. Bu aynı zamanda " gruplanmış oturumlar " olarak da bilinir . (Bu arada, bu bağlantı aynı zamanda [un]link-windowpencereleri oturumlar arasında taşımak için kullanılmasını önerir .)

Tabii ki simetri için tmux new-session -t innerde alt bölmede koşabilirdin attach. Bu durumda 4 tmux örneği çalıştırıyor olacaksınız (artı sunucu için bir tmux işlemi daha)!


0

Aşağıdaki kodu bilgisayarınıza girin .tmux.conf:

# cycle prev/next pane
bind -n S-right select-pane -t :.+
bind -n S-left select-pane -t :.-

Yeniden yapılandırma, daha sonra (direkt olarak ön ek anahtar olmadan) basarak Shift+ saat yönünde döngüsü bölmelerine ve Shift+ ters yönde döngüsüne.

Tmux 2.8'de test edilmiştir.


Konfigürasyonu düzenlemek istemiyorsanız, prefix+ osaat yönünde döngü için varsayılan anahtar bağlayıcıdır. Bazen bu anahtar bağlamayı buldum, sonra komutu tmux list-keysalıyorum ve kendi anahtar bağlarım için kullanıyorum:

bind-key    -T prefix       o                 select-pane -t :.+
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.