Tmux
tmux (terminal multiplexer) que permite tener diferentes terminales (o ventanas), cada una ejecutando un programa separado, creadas, accedidas y controladas desde una sola ventana de terminal. tmux puede ser desconectado (detached) de una terminal y continuar ejecutándose en segundo plano, para luego reconectarse.[1] Los usuarios familiarizados con GNU Screen pueden encontrar que tmux es una buena alternativa.
Users familiar with GNU Screen may find tmux as a suitable alternative.
Instalación
USE flags
USE flags for app-misc/tmux Terminal multiplexer
debug
|
Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces |
jemalloc
|
Use dev-libs/jemalloc for memory management |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
systemd
|
Enable use of systemd-specific libraries and features like socket activation or session tracking |
utempter
|
Include libutempter support |
vim-syntax
|
Pulls in related vim syntax scripts |
Emerge
Instalar app-misc/tmux:
root #
emerge --ask app-misc/tmux
Configuración
Una instalación estándar de tmux no instalará una configuración global (/etc/tmux.conf) o una configuración de usuario (~/.tmux.conf). Se proveen ejemplos en el directorio /usr/share/doc/tmux-2.0/examples que pueden ser copiados a la ubicación global o la de un usuario específico, y editadas a gusto usando un editor de texto.
Configuration Files
- /etc/tmux.conf — the system-wide configuration file.
- $XDG_CONFIG_HOME/tmux/tmux.conf — The user specific tmux configuration file.
- ~/.tmux.conf — The legacy single-user tmux configuration file location.
Ejemplos de la wiki
set -g default-terminal "screen-256color" # Usar 256 colores
set -g status-utf8 on # Habilitar utf-8
set -g history-limit 100000 # Tamaño del buffer del scroll
# Iniciar la numeración de las ventanas en 1 en lugar de 0
set -g base-index 1
# Configurar la prefix key y otras combinaciones de tecla para matchear con GNU Screen
set -g prefix C-a
bind-key C-a last-window
# Combinaciones de teclas para paneles horizontales y verticales
unbind %
bind | split-window -h
bind - split-window -v
# Habilitar los títulos de las ventanas
#set -g set-titles on
# Título de las ventanas (usa las variables de la barra de estado)
set -g set-titles-string '#T'
# Mostrar la hora y carga del sistema en la barra de estado
set -g status-bg '#4e4e4e'
set -g status-fg '#ffffff'
set -g status-left ' '
set -g status-right '#[bg=#bbbbbb]#[fg=#000000]#(cut -d " " -f -3 /proc/loadavg) #[bg=#4e4e4e]#[fg=#ffffff]#(
date +" %H:%M ")'
set -g window-status-format '#I #W'
set -g window-status-current-format ' #I #W '
setw -g window-status-current-bg '#55ff55'
setw -g window-status-current-fg '#000000'
# Color del borde de los paneles
set -g pane-active-border-fg '#bbbbbb'
set -g pane-border-fg '#555555'
# Bind para recargar la configuración
bind r source-file ~/.tmux.conf
- Match session numbers to number row
set -g base-index 1
- Set TERM, the default is "screen", "screen-256color" can be tried if "tmux-256color" doesn't work.
set -g default-terminal "tmux-256color"
- Set prefix to 'a' with ctl-a > a to send ctrl-a to the terminal
- set -g prefix C-a
- bind-key a send-prefix
- Set prefix2 to the default 'b'
- set -g prefix2 C-b
- Enable mouse
set -g mouse on
- Disable drag action in normal mode if your pointer causes problems with
unbind -n MouseDrag1Pane
- Also disable in copy mode
- unbind -Tcopy-mode MouseDrag1Pane
- Set the bar and inactive borders to blue, highlighting current in green.
- set-option -g status-style fg=black,bg=blue
- set-window-option -g window-status-current-style bg=green
- set-option -g pane-border-style fg=blue
- set-option -g pane-active-border-style fg=green
}}
To reload the configuration file from a terminal run:
user $
tmux source-file ~/.tmux.conf
Alternatively, modifications to the file can be loaded from within tmux via:
:
source-file ~/.tmux.conf
Automatic connection
Running tmux with exec and the -ADX
options will cause tmux to replace the current shell and create a session, or if one exists connect to it and both detach and exit the other client. This provides a very consistent way of working with remote sessions, and it can be run automatically:
Bash
user $
test -n "$PS1" && test -z "$TMUX" -a -n "$SSH_TTY" && exec tmux new -ADX
Fish
user $
status is-interactive ; and test -z "$TMUX" -a -n "$SSH_TTY" ; and exec tmux new -ADX
Complementos
Algunos plugins están disponibles para tmux. Mira las opciones debajo para las opciones disponibles.
tpm
tpm is a tmux plugin manager. See the tpm sub-article for more details on the installation process.
tmux-mem-cpu-load
tmux-mem-cpu-load es un pequeño programa diseñado para monitorear la actividad del sistema en la línea de estado de tmux. Vea el subartículo tmux-mem-cpu-load para más detalles sobre el proceso de instalación.
Tmux Resurrect
tmux-resurrect persiste entornos de tmux a través de reinicios del sistema. Vea el subartículo resurrect para más detalles sobre el proceso de instalación.
Uso
Combinaciones de teclas
tmux puede ser controlado desde un cliente conectado usando una combinación de teclas consistente en la prefix key stroke (Ctrl+b de manera predeterminada, es la combinación de teclas que anteponemos al resto de los comandos) seguido de la tecla del comando correspondiente.
Luego de presionar Ctrl+B, pueden utilizarse las siguientes combinaciones de teclas:
General
- ? = Lista todas las combinaciones.
- d = Desconecta al cliente actual.
- : = Ingresa a la línea de comandos de tmux.
Creando y administrando ventanas
- c = Crea una nueva ventana.
- n = Cambia a la ventana siguiente.
- p = Cambia a la ventana anterior.
- l = Moverse a la ventana seleccionada previamente.
- 0-9 = Selecciona de la ventana 0 a la 9.
- ' = Pregunta por un índice de ventana para seleccionar. Luego ingresa un número o el título para moverse a esa ventana.
- , = Renombre la ventana actual.
- w = Selecciona la ventana deseada de forma interactiva.
- :, luego escribe list-windows enter = Muestra el listado de ventanas.
Creando y administrando paneles
- " = Divide el panel actual en dos, uno arriba y otro abajo.
- % = Divide el panel actual en dos, derecha e izquierda
- o = Selecciona el panel siguiente en la ventana actual.
- ; = Mover al panel activo anterior.
- { = Intercambia el panel actual con el anterior.
- } = Intercambia el panel actual con el prócimo.
- Ctrl+o = Rota hacia adelante los paneles en la ventana actual.
- Alt+1 a Alt+5 = Ordena los paneles en una de las cinco configuraciones predeterminadas: even-horizontal, even-vertical, main-horizontal, main-vertical, o tiled.
- x = Mata (kill) al panel actual.
- ! = Mueve al panel actual a una nueva ventana.
Operaciones de copiado, pegado y scroll
Las teclas disponibles depende de si está seleccionado el modo emacs (predeterminado) o el modo vi. El modo puede ser configurado en .tmux.conf.
- [ = Entra al modo de copia para copiar texto o verlo el historial.
- ] = Pega el más reciente buffer o texto copiado.
- # = Lista todos los buffers de copia .
- - = Borra el texto o buffer copiados más reciente.
Control de sesión
Inicio de sesión
Una vez iniciado tmux crea un socket para la sesión en /tmp/S-<UID>/<Session Name>.
tmux puede ser iniciado con el siguiente comando:
user $
tmux
O, para indicar el nombre de la sesión al inicio, ejecuta:
user $
tmux new-session -s portage
Listando sesiones
Lista las sesiones de tmux para ver información de las sesiones existentes:
user $
tmux ls
0: 1 windows (created Thu Apr 9 09:09:03 2015) [180x65] (attached)
Cuando listamos sesiones el nombre de la sesión aparecerá como el primer elemento en la línea de información de sesiones. Es posible ver en la salida del comando que la sesión fue creada sin nombre, en ese caso la sesión será referenciada como 0
.
Otra forma de listar las sesiones es escribiendo el argumento list-sessions
.
user $
tmux list-sessions
0: 1 windows (created Thu Apr 9 09:09:03 2015) [180x65] (attached)
Se muestra exactamente la misma salida que en el comando anterior.
Renombrar una sesión
Utilizando simplemente tmux para iniciar una sesión no otorga una sesión con un nombre lindo y legible por humanos.
Si el nombre predeterminado de la sesión no es lo suficientemente descriptivo (0
no tiende a decir mucho), entonces la sesión puede ser renombrada. Supongamos que Larry la vaca inició tmux sin especificar un nombre de sesión en el inicio. Él comienza a trabajar compilando una nueva versión de Portage, y quiere cambiar el nombre de la sesión para reflejar la tarea actual. Para cambiar el nombre de la sesión primero tiene que asumir el control de tmux presionando la combinación mágica: Ctrl+b, luego :, lo que cambiará el foco a la línea de comandos de tmux. De forma predeterminada la línea se vuelve amarilla. Una vez ahí debe realizar:
:
rename-session -t 0 portage
Donde 0
es el nombre actual (default) de la sesión y portage
es el nombre deseado. Para renombrar una sesión de tmux a la que no estamos conectados:
user $
tmux rename-session -t 0 portage
Reconectar a una sesión
Luego de que la sesión es desconectada, todas las terminales permanecen activas y también los comandos que aún no han finalizado. Para reconectar a una sesión usa attach -t <session_name>
.
user $
tmux a -t portage
O usa la forma larga de conectar a una sesión existente:
user $
tmux attach -t portage
Operaciones Daemon-like
Para iniciar un comando en una sesión de tmux sin conectar a la misma (como un daemon), usa new-session -d
seguido del comando a ejecutar entre comillas:
user $
tmux new-session -d 'emerge -uDNvp @world'
Vea también
- Screen - Una alternativa a tmux.