El terminal MUltipleXer (tmux)

  En una entrada anterior se habló del emulador de terminal Terminator. En esta ocasión se hablará de un multiplexador de terminal (programa que funciona exactamente como un gestor de ventanas y paneles dentro de un terminal. Así, cada ventana es como una pestaña similar a las de un navegador de red, mientras que los paneles, no son mas que subdivisiones del terminal cada una de las cuales alberga un terminal dentro del terminal principal) conocido como tmux.
  Este programa tiene la ventaja añadida de que permite al usuario desacoplar la sesión del terminal, pudiendo recuperar esa sesión posteriormente. Por otra parte, no es necesario que el sistema operativo tenga entorno gráfico de escritorio para poder hacer funcionar este multiplexador de terminal.

INSTALACIÓN DEL PROGRAMA


  Este programa se encuentra en los repositorios de las distribuciones de Linux más populares, por lo que, tras actualizar la lista de paquetes y el propio sistema, se emplearán los siguientes comandos (dependiendo del tipo de distribución) para su instalación (anteponiendo sudo si n se es un usuario adminstrador):
  • apt-get install tmux  (distribuciones de tipo debian).
  • pacman -S tmux (Arch Linux y distribuciones del mismo tipo).
  • yum install tmux (distribuciones basadas en RPM).


PERSONALIZACIÓN

  Para que el programa sea más manejable e intuitivo, se puede crear un fichero de configuración ".tmux.conf" en el directorio "$HOME" del usuario que contenga lo siguiente:
# Ademas de Ctrl+A, agregamos un atajo de teclado tipo screen (Ctrl+A)
# Para tmux < 1.6:
set-option -g prefix C-a,C-b

# Para tmux >= 1.6:
#set-option -g prefix C-a
#set-option -g prefix2 C-b

# Empezar la numeración de las ventanas creadas en 1 (la primera ventana)
set -g base-index 1

  En este fichero de configuración se agrega al "atajo" disparador de los comandos que lleva tmux por defecto ("Ctrl+B", o "C-b" en terminología del programa) el disparador adicional "Ctrl+A" ("C-a"). Se suele hacer por varios motivos:
  1.   Muchos usuarios están acostumbrados a "Ctrl+A" debido al multiplexador de terminal screen.
  2.   Es más sencillo llegar a la tecla "A" que a la "B" con el "Ctrl" izquierdo pulsado.

  Es una decisión muy personal el cambiar totalmente el atajo de teclado de "C-b" a "C-a". Por un lado, si el usuario está acostumbrado a screen, es la mejor opción. Por otra parte, el atajo real de teclado de tmux es "C-b", por lo que muchos manuales harán referencia a "C-b" y si se tiene que compartir una cuenta de un servidor (por ejemplo, root) con otra persona, puede que alguno de sus usuarios prefiera el atajo por defecto. Por eso, en este caso se ponen ambos atajos como válidos simultáneamente.
  Se debe tener presente que este primer comando es diferente según la versión utilizada de este programa: Hay que usar el primer comando para tmux < 1.6 y el segundo par de comandos para tmux >= 1.6.
  La segunda opción de este ".tmux.conf" básico hace que los terminales que se van creando se numeren a partir del "1" (el inicial) y no desde el "0", puesto que es más intuitivo a la hora de cambiar entre ellos que el orden de los terminales coincida con el de la fila numérica del teclado.
  Por otra parte, también se puede utilizar el formato "colourXXX" añadiendo al mismo fichero una monolínea ("oneliner", en inglés), creada por Benjamín Albiñana, para ver las correspondencias de color:
for i in {0..255} ; do
   printf "\x1b[38;5;${i}mcolour${i}\n"

done

  También se pueden aprovechar los 2 comandos bind del ".tmux.conf", utilizando unos nuevos atajos de teclado más intuitivos ("Ctrl+b |" para vertical, "Ctrl+b -" para horizontal). Si no se ha hecho "bind", más abajo se explican los atajos de teclado originales.
  El texto a agregar al archivo es:
# Split windows with easier shortcuts: | and -
unbind %
bind | split-window -h
bind - split-window -v

  Para poder usar el ratón en el terminal con tmux activado (en sistemas operativos con entornos gráficos de escritorio) en modo histórico, se añadirá la siguiente línea en el archivo de configuración antes mencionado:
set -g terminal-overrides 'xterm*:smcup@:rmcup@'

  Otro cambio del modo histórico es modificar la combinación de teclas para entrar en él por otra más cómoda (por ejemplo, la barra espaciadora, cuya combinación de teclas sería "Ctrl+b barra espaciadora"). En este caso, basta con agregar al archivo ".tmux.conf" la siguiente línea:
bind-key Space copy-mode
  A continuación, puede verse un ejemplo de archivo ".tmux.conf" con algunas de las configuraciones antes mencionadas:
set -g status-utf8 on                       # enable utf-8
set -g history-limit 100000                 # scrollback buffer n lines
set-window-option -g xterm-keys on
set-window-option -g utf8 on

### Add screen's like shortcut (C-A)
#set-option -g prefix C-a,C-b               # For tmux < 1.6:
set-option -g prefix C-a                    # For tmux >= 1.6:
set-option -g prefix2 C-b                   # For tmux >= 1.6:
# set-option -g prefix C-a                  # To replace it completely

set -g base-index 1                         # Start numbering windows in 1

### don't rename windows automatically (Use C-A , to rename window)
set-window-option -g automatic-rename off
set-option -g allow-rename off

set -s escape-time 0                        # Reduce time for escape sequences

### Colours can be defined both with RGB or with colour0 to colour255:
set -g default-terminal "screen-256color"

### Custom status bar
set -g status-bg black
set -g status-left "#[bg=#f0c674] #H #[bg=default]  "
set -g status-right "#[bg=#f0c674] %d/%m/%Y - %H:%M "
set -g status-justify left
set -g status-bg "#b5bd68"
set -g status-left-length 25
set -g status-right-length 20
set-window-option -g window-status-format " #I: #W "
set-window-option -g window-status-current-format " #[fg=cyan,bold]#I: #[fg=default,bold]#W "
set-window-option -g window-status-current-fg white
set-window-option -g window-status-current-bg black
set-option -g pane-border-fg colour235
set-option -g pane-active-border-fg green

set-option -g pane-border-fg colour235
set-option -g pane-active-border-fg green

### Keyboard bindings

### Split windows with easier shortcuts: | and -
unbind %
bind | split-window -h
bind - split-window -v

### bind to reload config (thanks to gentoo wiki :)
unbind r
bind r source-file ~/.tmux.conf \; display-message "Configuration file reloaded."

### How to send commands to nested tmux windows (C-A C-A command)
bind-key a send-prefix

### Change to buffer mode with prefix + space (appart from C-A [ or C-A PgUp)
bind-key Space copy-mode

### Change and Move Windows
bind-key Left previous-window                  # C-a Left and C-a Right to move to prev/next window
bind-key Right next-window
bind-key S-Left swap-window -t -1              # C-a Shift+Left or Shift+Right to move Window to left/right
bind-key S-Right swap-window -t +1
bind-key P swap-window -t -1
bind-key N swap-window -t +1                   # Also C-a N y C-a P (uppercase)
bind-key R command-prompt 'rename-window %%'   # Set the window name
bind-key C-R refresh-client

bind-key Pageup previous-window
bind-key Pagedown next-window
#tmux swap-window -s SOURCE_NUM -t DEST_NUM

### Pane movement
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R

### Pane resize
bind-key H resize-pane -L 5
bind-key J resize-pane -D 5
bind-key K resize-pane -U 5
bind-key L resize-pane -R 5

# For tmux 1.8+, Zoom / unZoom panel (C-A z or Vim's C-A _):
bind-key z resize-pane -Z

### Sane scrolling
set -g terminal-overrides 'xterm*:smcup@:rmcup@'

USO BÁSICO

  Para comenzar a utilizar este multiplexador de terminal sólo hay que escribir en una terminal el comando tmux.
  Puede notarse que está activo porque en la parte inferior de la ventana del terminal (o de la pantalla en sistemas operativos sin entorno gráfico de escritorio) aparecerá una especie de pestaña donde podrá verse el número de la ventana, su nombre y, si se trata de la ventana activa (aparece un símbolo "*").
  Una vez abierto el programa, se pueden gestionar las ventanas con los siguientes atajos de teclado predeterminados (si no se ha personalizado el tmux), que se utillizan pulsando la tecla "Ctrl" y "b" a la vez, soltando ambas, y pulsando la otra tecla correspondiente rápidamente:
  •   Ctrl+b c: Crea una ventana.
  •   Ctrl+b w: Lista las ventanas que creadas.
  •   Ctrl+b n: Cambia a la siguiente ventana.
  •   Ctrl+b p: Cambia a la ventana previa.
  •   Ctrl+b <nº de ventana (0-9])>: Permite al usuario cambiar a esa ventana concreta.
  •   Ctrl+b f: Permite al usuario buscar las ventanas por el nombre.
  •   Ctrl+b ,: Nombra una ventana
  •  Ctrl+b &: Mata una ventana (antes de matar la ventana pide confirmación para hacerlo; también se obtiene el mismo resultado con el comando exit).
  Como ya se ha mencionado más arriba, dentro de una misma ventana pueden abrirse varios paneles, aunque al principo sólo existirá uno que ocupará toda la ventana. Utilizándose como se ha explicado más arriba, los atajos de teclado por defecto que gestionan los paneles son:
  •   Ctrl+b %: Divide un panel en dos en sentido vertical (dos paneles, uno al lado de otro).
  •   Ctrl+b ": Divide un panel en dos en sentido horizontal (dos paneles, uno encima de otro).
  •   Ctrl+b o: Se cambia al siguiente panel. El orden para pasar de un panel a otro es de acuerdo a los números que se encontrarán al ejecutar el siguiente atajo de teclado.
  •   Ctrl+b q: Muestra el número de orden de cada panel.
  •   Ctrl+b x: Mata un panel (antes de matar el panel preguntará al usuario si efectivamente eso es lo que quiere hacer).
  •   Ctrl+b z: Permite que un panel ocupe toda la ventana y al revés.
  •   Ctrl+b <espacio>: Cambia entre las diferentes disposiciones que tmux tiene definidas por defecto.
  El programa se cerrará al salir de la última de las ventanas abiertas con él.

GESTIÓN DE SESIONES

  Se trata, de una forma sencilla, de separar entornos por completo. Así, las operaciones que se pueden hacer con sesiones, gracias a los correspondientes comandos, son las siguientes:
  •   tmux new -s <nombre de sesión>: Crea una nueva sesión de tmux etiquetada con el nombre indicado.
  •   tmux attach -t <nombre de sesión>: Se acopla a una sesión existente de este multiplexador de terminal que se haya creado previamente con la etiqueta del nombre de sesión indicado.
  •   tmux switch -t <nombre de sesión>: Cambia a una sesión existente etiquetada con el nombre indicado.
  •   tmux list-sessions: Muestra un listado de sesiones existentes.
  •   tmux detach: Desacopla la sesión existente del terminal (también se puede hacer con el atajo de teclado "Ctrl+b d" empleado como se ha explicado mas arriba).

HISTÓRICO DE LA VENTANA

  Por el simple hecho de estar utilizando tmux, el funcionamiento del "histórico" de las terminales cambia. Dentro de este programa, la consola predeterminada ya no tiene acceso a ese histórico, porque es este último quien lo genera y mantiene.
  Este histórico sirve para inspeccionar la salida de comandos anteriores o para seleccionar texto y copiarlo a una memoria temporal o guardarlo en fichero.
  Se emplean los siguientes atajos de teclado para acceder al histórico:
  •   Ctrl+b ]: Accede al histórico.
  •   Ctrl+b RePág: Accede al histórico retrocediendo una página.
  Para salir del histórico se pulsa el comando q.
  Dentro del histórico, generalmente, se emplean las siguientes teclas y atajos de teclado:
  •   Ctrl+b [: Modo copia.
  •   Cursores, RePág, AvPág: Movimiento en el histórico.
  •   Espacio: Inicio de selección de texto.
  •   Entrar: Final de selección de texto (el texto entre las 2 marcas se copia en la memoria temporal).
  •   Ctrl+b ]: Pega el texto de la memoria de tmux en la terminal.
  •   Ctrl+b :show-buffer: Muestra el contenido de la selección realizada (parámetro -b <nº> para determinar un número de bloque de memoria a pegar).
  •   Ctrl+b :list-buffers: Muestra el contenido de las últimas selecciones realizadas (van rotando).
  •   Ctrl+b :choose-buffer: Permite seleccionar uno de los bloques de memoria del histórico como bloque de memoria vigente ("current buffer", en inglés).
  •   Ctrl+b :save-buffer <nombre de archivo>.txt: Permite guardar el contenido del bloque de memoria en un archivo de texto (parámetro -b <nº> para determinar un número de bloque de memoria a pegar).
  Las cuatro últimas  opciones también se pueden ejecutar como comandos de tmux con la siguente sintaxis:
  tmux <opción> <parámetro>

  Aguardo que la presente entrada haya sido interesante para el lector. Si es así, espero que la comente y/o la comparta, por favor.

1 comentario:

  1. cerrar las ventanas que aparece con prefix+w -> tmux">tmux kill-window -t 9

    Fuente: https://www.iteramos.com/pregunta/29377/como-terminar-ventana-en-tmux

    ResponderEliminar

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.