it-swarm-eu.dev

Jak procházím tabulemi uvnitř okna v tmuxu jako na obrazovce?

Myslel jsem, že Přesun tmuxového okna do okna byla stejná otázka, ale nezdá se, že by byla.

Z pravidelného používání obrazovky GNU) hledám tmux, který by dělal totéž. Jednou z věcí, které pravidelně dělám, je otevření několika různých oken, jedno s otevřeným kódem v vim, a otevře se několik oken terminálů, aby se otestoval kód, a někdy okno nebo dvě pro různé jiné věci. Rozdělil jsem obrazovku svisle a často budu mít okno vim v horním podokně a potom jedno z dalších oken v spodní dno.

Hlavní příkazy, které pak používám, jsou Ctrla,Tab otáčet se mezi tabulemi a Ctrla,n pro otáčení mezi okny v podokně. Například s vim v horním panelu přepnu na spodní panel a potom otočím přes ostatní terminály a dělám, co budu potřebovat. Obrazovka zůstane po celou dobu rozdělena.

Problém je v tom, že nemůžu najít srovnatelné schopnosti s obrazovkami Ctrla,n v tmux. Přepínání oken Zdá se, že nefunguje uvnitř podokna, ale skočí úplně. Pokud je obrazovka rozdělena, zdá se, že pouze dvě možnosti přeskočí do některého okna, které není rozděleno, a poté je rozdělí nebo provede dílčí rozdělení podokna. Ani to, co jsem hledal.

Návrhy (kromě lepení na obrazovku)?

45
FooBar

tmux a obrazovka mají různé modely, takže neexistuje přesný ekvivalent.

V screen terms, split vám umožní zobrazit více oken najednou. next (C-a n) otáčí okna přes aktivní část rozdělení; to vám umožní otáčet „skrytá“ okna v aktivní oblasti rozdělení.

V termínech tmux rozdělí okno okno na jednu nebo více tabulek. Každá část rozděleného okna je samostatná podokno, panely nejsou nikdy skryty (pokud je okno vybráno (viditelné) jsou také všechny jeho panely) a podokno lze použít pouze v jednom rozdělení jednoho okna (podokno může nesmí být ve více oknech a nesmí být ve více částech stejného okna). Existují příkazy pro přesun oken v (nebo mezi) okny, ale ne stejným způsobem jako next v screen.


K zajištění podobného efektu byste mohli použít vazbu jako je následující:

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

Pravděpodobně to budete chtít vložit do svého ~/.tmux.conf soubor, ale můžete jej pouze napsat/vložit Prefix: svázat ji v aktuální instanci serveru.

Chcete-li použít vazbu, vyberte své „hlavní okno“, rozdělte je, vytvořte okno „kontejneru podokna“ okamžitě za „hlavním oknem“ a poté pomocí vazby otočte jakýkoli podokno v „hlavním okně“ ze skupiny v „ okno kontejner ”.

Zde je návod, jak vytvořit nastavení:

  • Vyberte okno, které chcete použít jako své „hlavní okno“. Začněte v něm (např.) Vim.

  • Rozdělte své „hlavní okno“ na dvě tabule.

    Např. Prefix" (:split-window)

    Tento panel můžete použít jako testovací okno (nebo prohlížeč protokolu nebo cokoli).

  • Okamžitě po hlavním okně vytvořte nové okno („kontejner panelu“).

    Např. Prefixc (:new-window)

    Je důležité, aby se mezi indexy „hlavního okna“ a „okna kontejneru“ nedostalo žádné jiné okno (+ v specifikacích okna použitých v vázaných příkazech znamená „další vyšší číslované okno“).

  • Rozdělte toto okno na několik tabulí. Chcete-li se otáčet třemi tabulemi, rozdělte toto okno na dvě tabule (třetí panel je ten v „hlavním okně“).

    Možná budete potřebovat Shell pro git a Shell pro spuštění databázového rozhraní. Vložte všechny do samostatného podokna v tomto „kontejnerovém panelu“.

  • Přepněte zpět do „hlavního okna“. Vyberte podokno, které chcete „otočit“.

    Můžeš použít PrefixUp/Down/Left/Right pohybovat se mezi tabulemi.

  • Vyvolejte vazbu a zaměňte aktuální podokno s prvním podoknem v okně „kontejner kontejneru“ a („za scénami“) otočte podokna uvnitř okna „kontejner kontejneru“ (tak, aby při příštím spuštění vazby byl první příkaz zamění se za podokno „další“ v pořadí).

    PrefixControl-n (vazba používá C-n, ale můžete to změnit na cokoli chcete).

  • Chcete-li se posouvat zpět přes tabule, můžete použít následující:

bind-key C-p swap-pane -s: +. bottom \; rotate-window -Dt: +
31
Chris Johnsen

Věřím, že to, co hledáte, je Ctrlb+ (). Ty vám umožní pohybovat se mezi tabulemi.

46
sparticvs

použijte bind -r, takže můžete jednou stisknout prefix a poté další klávesy v sekvenci k nalezení podokna. Časový limit lze upravit pomocí repeat-time. Šek man tmux

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

Pokud dáváte přednost 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
8
zhazha

Tady je malý conf, který vám umožní přesunout se na anohter tabule nebo okna pomocí klávesových zkratek ALT nebo SHIFT + šipka. Není nutné používat předponu klíče.

## 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

Pokud jste línější než já, mohl by vás také zajímat následující kód, který umožňuje navigaci tabulí myší. (použití: předpona klíče + m pro zapnutí, M pro vypnutí)

## 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'

tato konfigurace by měla fungovat pro Tmux 1.6 až 1.9.

2
xaa

Tato odpověď vám dává dvě tabule, kde obě tabule obsahují stejnou sadu oken, ale každý panel může přepínat mezi okny nezávisle!

Tmux přístup je použít tři relace:

  • vnější relace pro tabule ,
  • vnitřní relace pro okna (k tomu se můžete připojit z jednoho panelu),
  • sekundární pohled na vnitřní relaci (pro druhý panel).

Ano, je to filozofie UNIX zbláznil. Začněme:

# 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

Nyní můžete přepnout do horního panelu a otevřít Vim jako obvykle. Chcete-li procházet okny ve vnitřní relaci (dolní panel), budete muset použít Ctrl-bCtrl-bn a p.

Kromě: To je trochu nepraktické, ale vždy můžete změnit předponu vnější relace, např. na Ctrl-a, takhle:

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

Pak to prostě bude Ctrl-bn a p cyklovat vnitřní okna a Ctrl-ao cyklovat vnější tabule.

OK, místo toho, abychom otevřeli Vima v horním panelu, připojme se znovu k vaší vnitřní relaci. Ukončete vim a tentokrát použijte new-session příkaz (zejména s -t ne -s):

$ tmux new-session -t inner

Voila! Nyní můžete procházet okny na horním i dolním panelu.

Důvod, proč musíme použít new-session -t podruhé je to, že pokud bychom měli jednoduše dělat attach -t znovu, horní a dolní panely by byly synchronizovány, vždy zobrazující stejné okno, což není to, co chcete. Aby se tento panel mohl pohybovat okny nezávisle na druhém panelu, vytvoříme novou relaci „zobrazení“, ale její zadní konec připojíme přímo k existující relaci, která okna drží. Toto je také známé jako „ seskupené relace “. (Mimochodem, tento odkaz také navrhuje použití [un]link-window k přesunutí oken mezi relacemi.)

Samozřejmě pro symetrii byste mohli spustit tmux new-session -t inner ve spodním panelu také místo attach. V takovém případě byste spustili 4 instance tmux (plus jeden další proces tmux pro server)!

2
joeytwiddle

Vložte následující kód do svého .tmux.conf:

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

Znovu načtěte config, pak můžete stisknout (přímo bez předpony) Shift+ - cyklování tabulek ve směru hodinových ručiček a - Shift+ cyklovat v obráceném směru.

Testováno v Tmux 2.8.


Pokud nechcete upravit konfiguraci, prefix+o je výchozí vazba klíče pro cyklus ve směru hodinových ručiček. Občas jsem našel tuto vazbu klíčů, pak jsem dostal příkaz od tmux list-keys a použijte jej pro vlastní vazby klíčů:

bind-key    -T prefix       o                 select-pane -t :.+
1
Reorx