Eu pensei que Mover o painel tmux para a janela era a mesma pergunta, mas não parece ser.
Vindo do uso regular da tela GNU, estou procurando o tmux para fazer as mesmas coisas. Entre as coisas que faço regularmente, há duas janelas diferentes abertas, uma com algum código aberto no vim e algumas janelas de terminais abertas para testar o código, e algumas vezes uma ou duas janelas para várias outras coisas. Eu divido a tela na vertical e, muitas vezes, a janela do vim no painel superior e, em seguida, uma das outras janelas na parte inferior.
Os principais comandos Então eu uso são Ctrla, Tabpara rodar entre os painéis e Ctrla, npara rodar entre as janelas dentro de um painel. Por exemplo, com o vim no painel superior, alterno para o painel inferior e depois giro pelos outros terminais, fazendo o que eu preciso. A tela permanece dividida o tempo todo.
O problema é que não consigo encontrar capacidade comparável à da tela Ctrla, nno tmux. A mudança de janelas parece não funcionar dentro de um painel, mas é um salto total. Se a tela estiver dividida, as duas únicas opções parecerão saltar para uma janela que não esteja dividida e depois dividi-la ou fazer uma subdivisão de um painel. Nem é o que eu estava procurando.
Sugestões (além de ficar com a tela)?
fonte
tmux
uma janela pode ser dividida em vários painéis. Você está tentando alternar entre painéis em uma janela com um atalho de teclado?swap-pane
? Se você deseja imitar as telasCtrl-a n
, o equivalente ao tmux éCtrl-b n
.Respostas:
O tmux e a tela têm modelos diferentes, portanto não há equivalente exato.
Em termos de tela , uma divisão permite exibir várias janelas ao mesmo tempo.
next
(C-a n
) gira as janelas através da parte ativa da divisão; isso permite que você gire janelas "ocultas" pela região ativa da divisão.Em termos do tmux , uma divisão divide uma janela em um ou mais painéis. Cada parte de uma janela dividida é um painel individual, os painéis nunca são ocultados (se uma janela é selecionada (visível), todos os seus painéis também são) e um painel só pode ser usado em uma única divisão de uma janela (um painel pode não pode estar em várias janelas e não pode estar em várias divisões da mesma janela). Existem comandos para mover painéis nas janelas (ou entre), mas não de maneira idêntica à
next
da tela .Você pode usar uma ligação como a seguinte para organizar um efeito semelhante:
Você provavelmente desejará colocar isso no seu
~/.tmux.conf
arquivo, mas poderá digitar / colar depois Prefix :para vinculá-lo à sua instância atual do servidor.Para usar a encadernação, escolha sua “janela principal”, divida-a, crie uma janela “contêiner do painel” imediatamente após a “janela principal” e use a encadernação para girar qualquer painel na “janela principal” entre o grupo no “ recipiente do painel ”.
Aqui está como você pode criar a instalação:
Escolha uma janela para usar como sua "janela principal". Inicie (por exemplo) o Vim nele.
Divida sua "janela principal" em dois painéis.
Por exemplo Prefix "(
:split-window
)Você pode usar esse painel como sua janela de teste (ou visualizador de logs ou qualquer outra coisa).
Crie uma nova janela (o “contêiner do painel”) imediatamente após a janela principal.
Por exemplo Prefix c(
:new-window
)É importante que nenhuma outra janela fique entre os índices da “janela principal” e da janela “contêiner do painel” (
+
nos especificadores de janela usados nos comandos encadernados significa “a próxima janela mais numerada”).Divida esta janela em vários painéis. Para girar através de três painéis, divida esta janela em dois painéis (o terceiro painel é o da “janela principal”).
Talvez você precise de um shell para o git e de um shell para executar uma interface de banco de dados. Coloque cada um em um painel separado nesta janela "contêiner do painel".
Volte para a sua "janela principal". Selecione o painel que você deseja "girar para fora".
Você pode usar Prefix Up/ Down/ Left/ Rightpara se mover entre os painéis.
Chame a ligação para trocar o painel atual pelo primeiro painel na janela "painel de contêineres" e ("nos bastidores") gire os painéis dentro da janela "painel de contêineres" (para que, na próxima vez em que você execute a ligação, o primeiro comando trocas com o painel "próximo" na sequência).
Prefix Control- n(a ligação usa Cn, mas você pode alterar isso para o que quiser).
Para rolar para trás pelos painéis, você pode usar o seguinte:
fonte
resize-pane -Z
(por padrão, vinculado ao Prefixo + z) que "amplia" temporariamente um painel para ter o tamanho total da janela. Para a versão anterior à 1.8, não havia uma maneira integrada de fazer isso; outros criaram soluções com script a partir de outros comandos internos (por exemplo, algumas das respostas à pergunta da SU: “Maximizando” um painel no tmux ).C-b o
ciclos de painéis.Eu acredito que o que você está procurando é Ctrlb+ ( →, ←, ↑, ↓). Isso permitirá que você se mova entre os painéis.
fonte
Ctrl-b+{
ouCtrl-b+}
? Isso é o mais próximo que posso encontrar dessa funcionalidade. Os painéis não são feitos da mesma maneira no tmux, pois são manipulados na tela.^b↑
. Como, então, realmente foco o painel destacado, de modo que outro↑
seja capturado pelo shell, e não pelo tmux?use
bind -r
, para que você possa pressionarprefix
uma vez e depois outras teclas em uma sequência para localizar seu painel. O tempo limite pode ser ajustado emrepeat-time
. Verificaman tmux
Se você preferir
hjkl
,fonte
Aqui está uma pequena conf que permite que você mova para exibir painéis ou janelas usando os atalhos ALT ou SHIFT + seta. Não é necessário usar o prefixo da chave.
Se você é mais preguiçoso do que eu, também pode se interessar pelo código a seguir que permite a navegação por painéis pelo mouse. (uso: prefixo da tecla + m para ativar, M para desativá-lo)
essa configuração deve funcionar está funcionando com certeza para o tmux 1.6 a 1.9.
fonte
Essas respostas oferecem dois painéis, nos quais os dois painéis mantêm o mesmo conjunto de janelas, mas cada painel pode alternar entre janelas independentemente.
A abordagem tmux é usar três sessões:
Sim, esta é a filosofia UNIX louco ido. Vamos começar:
Agora você pode alternar para o painel superior e abrir o Vim como de costume. Para percorrer as janelas na sessão interna (painel inferior), você precisará usar Ctrl-b Ctrl-b ne p.
OK agora, em vez de abrir o Vim no painel superior, vamos nos conectar novamente à sua sessão interna. Saia do vim e, desta vez, use um
new-session
comando (principalmente com-t
not not-s
):Voila! Agora você pode percorrer as janelas nos painéis superior e inferior.
A razão pela qual devemos usar
new-session -t
a segunda vez é que, se simplesmente fizermosattach -t
novamente, os painéis superior e inferior serão sincronizados, sempre mostrando a mesma janela, que não é o que você deseja. Para permitir que esse painel se mova pelas janelas independentemente do outro painel, criamos uma nova sessão de "exibição", mas conectamos seu back-end diretamente à sessão existente que contém as janelas. Isso também é conhecido como " sessões agrupadas ". (A propósito, esse link também sugere usar[un]link-window
para mover janelas entre as sessões.)Obviamente, por simetria, você também poderia ter executado
tmux new-session -t inner
o painel inferior em vez deattach
. Nesse caso, você estaria executando 4 instâncias do tmux (mais um processo do tmux para o servidor)!fonte
Coloque o seguinte código no seu
.tmux.conf
:Recarregar a configuração, você pode pressionar (diretamente sem a tecla de prefixo) Shift+ →para alternar os painéis no sentido horário e Shift+ ←para alternar no sentido inverso.
Testado no Tmux 2.8.
Caso você não queira editar a configuração, prefix+ oé a ligação de tecla padrão para o ciclo no sentido horário. Ocasionalmente encontrei essa ligação de chave, então recebo o comando
tmux list-keys
e o uso para minhas próprias ligações de chave:fonte