Como você oculta um painel tmux?


60

Eu tenho 3 painéis na minha janela tmux:

--------------------------
|             |      2   |
|             |          |
|        1    |----------|
|             |      3   |
|             |          |
--------------------------

Os painéis 1 e 2 têm vim. O painel 3 executa um cli que estou desenvolvendo. Às vezes, quero comparar os painéis 1 e 2, então quero ocultar o painel 3:

--------------------------
|             |          |
|             |          |
|        1    |       2  |
|             |          |
|             |          |
--------------------------

e, em seguida, traga novamente o painel 3. Não quero matar o painel 3, pois configurei algumas coisas lá e não quero ir embora configurando-as novamente.

  • Existe algo semelhante ao PREFIX + zqual pode ampliar o painel 2, mas sem tocar no painel 1? Ou
  • Existe uma maneira de ocultar o painel 3 rapidamente e trazê-lo de volta quando necessário?

Respostas:


71

Use os comandos break-panee join-pane. Consulte man tmuxpara detalhes, opções e uso.


Ocultar painel 3:

Selecione o painel 3e insira Prefix- :break-pane -dP.

tmuxenvia o painel 3para uma janela em segundo plano (a -dbandeira) e imprime algumas informações sobre ela no painel 2 (a -Pbandeira). Por padrão, você verá algo como 1:2.0(significado session:window.pane:). Clique qpara continuar trabalhando. 1 1

1 Com alguma prática, você poderá soltar a -Pbandeira, pois é possível prever o session:window.panetrigêmeo: o sessionpadrão é a sessão atual e o panepadrão 0enquanto windowé o próximo identificador de janela livre.

Recupere o Painel 3:

Para chegar painel 3eo layout de volta, selecione painel 2e emissão Prefix- :join-pane -vs 1:2.0dizendo tmuxpara dividir painel 2vertical ( -v) e para se juntar ao (fonte) painel ( -s) com o identificador 1:2.0. Opcionalmente, você pode descartar sessiono paneidentificador ou . Observe também que o tmux armazena um histórico de linha de comando, convenientemente acessível com Prefix- :- Up.

Provavelmente, você precisará de algum tempo para entender o problema, mas, com isso, certamente poderá criar associações de teclas personalizadas que sejam convenientes para você.


Esta pergunta contém algumas informações e truques úteis que podem melhorar seu fluxo de trabalho.


Instruções claras! Funciona sem problemas para mim, muito melhor do que minha resposta!
— Bernhard

Por padrão, o painel 3 será quebrado na última janela. Se você já possui 3 janelas na sessão atual, o painel se tornará a Janela 3 (suponha que a janela inicie em 0); portanto, o 3 em "Janela 3" depende do Nas janelas abertas, como posso fazer isso funcionar em ligações de teclas personalizadas?
— CodyChan

5

Uma ideia: execute o tmux no tmux.

Configuração original:

Painel 1 e Painel 2; lado a lado. Execute o vim no Painel 1 normalmente.

No painel 2, execute o tmux novamente e crie dois painéis (um por cima do outro dessa vez). Em seguida, execute o vim no painel 2.1 e sua CLI no painel 2.2. Isso deve permitir que você acesse o painel 2.1 em tela cheia com sua segunda instância do Vim, resultando no comportamento desejado.


é isso que eu chamo de pensar fora da caixa!
— user881300

Obrigado user881300. Ele tem algumas falhas (poder enviar comandos tem algumas peculiaridades, por exemplo). Espero atualizar isso para uma resposta mais completa depois de testá-lo - preciso de funcionalidades semelhantes.
— BinaryBen

2
@ user881300 Tecnicamente, esta é a caixa na caixa de pensamento.
— Mateen Ulhaq

3

Em vez de ocultar o painel 3, você também pode trapacear um pouco e torná-lo muito pequeno, o que provavelmente também funcionará no seu caso.

Quando o painel 2 é o painel ativo, você pode

PREFIX : resize-pane -D 40

Em seguida, para subir novamente, você pode

PREFIX : resize-pane -D 28

onde você teria que substituir 28 por um número decente ou, em vez disso, poderia tentar PREFIXEsc4, o que redimensiona automaticamente.


Eu estava redimensionando o painel usando, set -g mouse-resize-pane onmas, além do redimensionamento, temos outra opção?
— user881300

@ user881300 Não sou tmuxespecialista de forma alguma, mas gostaria de saber se isso é possível.
— Bernhard

1
CTRL+B, ALT+<arrow direction to resize>, que CTRL+B, ESC, 4(thx @Bernhard) para restaurá-lo.
— FelikZ 30/08/2015

1

Agora, essa pergunta tem quase 5 anos, mas eu a encontrei porque queria fazer algo semelhante e criei as seguintes combinações de teclas, graças à resposta do usuário78291 :

bind-key ! break-pane -d -n _hidden_pane
bind-key @ join-pane -s $.1

Dessa forma, eu posso usar Prefix!para ocultar o painel atual e Prefix@trazê-lo de volta. A parte boa é que eu posso ocultar vários painéis dessa maneira.

Está longe de ser perfeito, mas serve para ocultar painéis e trazê-los de volta muito bem.


0

Eu sei que isso realmente não oculta o painel em que você está trabalhando, mas estava tentando fazer isso para impedir que o tmux envie comandos comuns para as janelas selecionadas e cheguei a uma solução muito mais simples.

Se você não deseja ocultar visualmente o painel, mas apenas deseja interromper qualquer entrada que vá para o painel. Um cenário pode ser o de que você deseja enviar um comando para 5 painéis abertos, mas não deseja enviá-lo para 2 deles.

Nesse caso de uso, você pode fazer ctrl + snos painéis que você não deseja que os comandos acessem ( ctrl + sbloqueia todas as entradas no painel).

Quando terminar, pressione ctrl + cpara voltar.

Nota : Não pressione ctrl + qapós os comandos, pois ele executará todos os comandos nessa tela. ctrl + cnão fará isso (tentei isso no Ubuntu).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.