Navegando pelas perguntas que encontrei sobre o tmux (eu normalmente usava o GNU Screen). Minha pergunta é o que são prós e contras de cada um deles. Especialmente, não consegui encontrar muito sobre o tmux.
Navegando pelas perguntas que encontrei sobre o tmux (eu normalmente usava o GNU Screen). Minha pergunta é o que são prós e contras de cada um deles. Especialmente, não consegui encontrar muito sobre o tmux.
Respostas:
No site deles :
- Qual a diferença do tmux da tela do GNU? O que mais isso oferece?
O tmux oferece várias vantagens sobre a tela:
- um modelo cliente-servidor claramente definido: janelas são entidades independentes que podem ser conectadas simultaneamente a várias sessões e visualizadas em vários clientes (terminais), além de serem movidas livremente entre sessões no mesmo servidor tmux;
- uma interface de comando consistente e bem documentada, com a mesma sintaxe usada interativamente, como uma ligação de chave ou a partir do shell;
- facilmente programável a partir do shell;
- vários buffers de pasta;
- escolha de layouts de teclas vi ou emacs;
- uma opção para limitar o tamanho da janela;
- uma sintaxe da linha de status mais utilizável, com a capacidade de exibir a primeira linha de saída de um comando específico;
- uma base de código licenciada por BSD, mais limpa, moderna e de fácil extensão.
Ainda existem alguns recursos que a tela omite:
- suporte serial e telnet integrado; isso é inchaço e é improvável que seja adicionado ao tmux;
- suporte mais amplo à plataforma, por exemplo, IRIX e HP-UX e para terminais ímpares.
<C-Left>
no vim
no tmux
.
Uma diferença está em como os dois agem quando vários terminais são conectados a uma única sessão.
Com a tela, a visão de cada terminal conectado é independente dos outros. Com o tmux, todos os terminais conectados veem a mesma coisa.
Digamos que você tenha dois terminais conectados a uma única sessão do tmux. Se você digitar ^B1 em um terminal, o outro terminal também mudará para a janela 1.
Quando você tem dois terminais conectados a uma sessão de tela única e digita ^A1 em um, isso não afeta o outro terminal.
Isso é baseado na minha experiência com o tmux 1.2; Vejo que 1.3 está fora, mas não notei nada no changelog sobre essa mudança de comportamento.
Se sua sessão original do tmux for chamada 0
(o padrão), você poderá fazer tmux new-session -t 0
) para iniciar uma nova sessão independente conectada ao mesmo conjunto de janelas, que poderá ter sua própria visualização.
tmux new -t 0
.
O tmux é relativamente novo comparado com a tela GNU. Vantagens / Desvantagens é uma pergunta difícil, pois os dois programas resolvem aproximadamente o mesmo problema. O tmux é licenciado para BSD enquanto a tela é GNU GPL. Isso é importante para algumas pessoas.
A tela está mais representada (no Linux) no momento, ou seja, é mais provável que você a encontre em uma determinada caixa Linux do que no tmux. No entanto, o tmux está mais representado no OpenBSD, pois está incluído como parte da instalação base.
Ambos os programas permitem que você faça a mesma coisa, embora o estado das coisas seja um pouco mais complexo que isso. Alternar entre os dois não é muito complicado, pois muitas das funcionalidades das telas também chegaram ao tmux, embora se você for um usuário avançado de um deles, provavelmente encontrará algumas frustrações ao mudar para o outro.
Como em qualquer programa, isso realmente depende das suas necessidades e com as quais você se sente mais confortável. Experimente os dois e veja com quem você joga bem.
Para mais informações sobre o tmux, consulte https://tmux.github.io/
A maior diferença em meu uso foi que, no Gnu Screen, você só pode dividir quadros horizontalmente, enquanto no Tmux, você pode dividir horizontal e verticalmente. Esse é um tipo de alvo em movimento, embora, como aqui digo, a divisão vertical esteja entrando na tela .
Fora isso, as coisas são simples.
Eu pensei em mencionar apenas sobre o byobu
invólucro que está disponível para a tela que o torna muito melhor assim que sai da caixa. Não sei se algo assim está disponível para o tmux, mas byobu
fiz do meu .screenrc apenas algumas linhas. Confira este artigo rápido sobre byobu e capturas de tela. A página do projeto do byobu descreve o nome originário de um termo japonês para telas decorativas de vários painéis que servem como divisórias de ambientes dobráveis. Além disso, apenas executá-lo não prejudica as configurações da tela, para que você possa testá-lo com segurança. Depois de iniciar a sessão, byobu
você pode se reconectar livremente usando screen
e ainda não perder as personalizações feitas por byobu
(use-a apenas para a chamada inicial). As duas principais vantagens são:
Não estou usando a parte de combinações de teclas, mas definitivamente considero as barras de status úteis.
Além disso, você pode achar útil o link Screen Vs tmux . Eu acho que a maioria já é mencionada pelas respostas existentes.
byobu
, como este responde com sua lista de recursos.
byobu
, mas é tão simples quanto executar o comando e encontrá-lo por si mesmo (é orientado por menus), pois não altera as configurações de tela existentes. E fiz da minha resposta um wiki da comunidade, então fique à vontade para editá-lo.
Drench levanta um ponto interessante - o comportamento padrão de conectar duas vezes à mesma sessão é diferente no tmux. No entanto, se você deseja anexar duas vezes e ter uma visão independente das janelas nessa sessão - inicie o tmux com
tmux new-session -t <session name>
Isso criará uma nova sessão para você e anexará as janelas da sessão já existente. Se você não nomeou sua primeira sessão, você pode adicionar uma com 'rename-session'.
Uma grande vantagem screen
é que ele não é desenvolvido ativamente. As páginas de erros têm cerca de 200 itens não atribuídos, que remontam a 5 anos.
tmux
também possui alguns problemas em aberto, mas muito menos, e é suportado mais ativamente.
O tmux é mais novo e vários outros recursos.
Eu descobri que o bom uso depende de uma boa configuração.
Eu uso o vi (vim) para editar (ruby on rails) e há algumas coisas de configuração para fazer isso funcionar bem.
Aqui está o meu arquivo ~ / .tmux.conf com muitas configurações úteis:
bind r source-file ~/.tmux.conf \; display "Reloaded!" # Reload with ctrl-r
set -g prefix C-a # prefix from ctrl-b to ctrl-a
unbind C-b # allow ctrl-b for other things
set -sg escape-time 1 # quicker responses
bind C-a send-prefix # Pass on ctrl-a for other apps
set -g base-index 1 # Numbering of windows
setw -g pane-base-index 1 # Numbering of Panes
bind \ split-window -h # Split panes horizontal
bind - split-window -v # Split panes vertically
bind h select-pane -L # Switch to Pane Left
bind j select-pane -D # Switch to Pane Down
bind k select-pane -U # Switch to Pane Up
bind l select-pane -R # Switch to Pane Right
bind -r C-h select-window -t :- # Quick Pane Selection
bind -r C-l select-window -t :+ # Quick Pane Selection
bind -r H resize-pane -L 5 # Switch to Pane Left
bind -r J resize-pane -D 5 # Switch to Pane Down
bind -r K resize-pane -U 5 # Switch to Pane Up
bind -r L resize-pane -R 5 # Switch to Pane Right
setw -g mode-mouse off # Mouse Off
set -g mouse-select-pane off # Mouse Off
set -g mouse-resize-pane off # Mouse Off
set -g mouse-select-window off # Mouse Off
setw -g monitor-activity on # Activity Alerts
set -g visual-activity on
set -g status-fg white # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green # Pane colors
set -g pane-border-bg black
set -g pane-active-border-fg white
set -g pane-active-border-bg yellow
set -g message-fg white # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40 # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on # Status Line, right side
set -g status-right "-------"
set -g status-interval 60 # frequency of status line updates
set -g status-justify centre # center window list
setw -g mode-keys vi # vi keys to move
unbind v # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up # Maximizing and Minimizing...
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
Terei a liberdade de acrescentar uma diferença:
O tmux é baseado em ncurses enquanto a tela não desenha elementos adicionais. Se alguém usar um emulador de terminal que suporte rolagem, ele rolará com a tela, mas não com o tmux (pelo menos na configuração padrão). O mesmo se aplica à pesquisa e recursos similares.