JustToThePoint English Website Version
JustToThePoint en español
JustToThePoint in Thai

Cómo mejorar tu productividad en tu terminal con Tmux

Un multiplexor de terminales es una aplicación que se puede usar para dividir un terminal en una o más sesiones virtuales. Básicamente, podemos tener varias sesiones dentro de un solo terminal y conectar y desconectar estas sesiones cuando nos sea más conveniente.

Es útil para administrar múltiples herramientas y aplicaciones de línea de comandos y para separar los programas de las sesiones de shell de Unix que los iniciaron; esto es particularmente importante cuando queremos que un proceso o programa remoto continúe ejecutándose incluso cuando la conexión se ha interrumpido o cerrado.

Digamos que tienes que administrar un servidor remoto a través de ssh pero la conexión es inestable y se pierde continuamente. Eso significa que tienes que volver a conectarte con frecuencia y no quieres perder todo tu trabajo y tener que empezar de cero cada vez que te conectas. Los multiplexores de terminales te ofrecen la posibilidad de guardar tus sesiones y luego desconectarte. Una vez que accedas al sistema, puedes volver a conectarte a tu última sesión y continuar justo donde lo dejaste. A terminal multiplexer 

Windows Terminal

Windows Terminal es el terminal que se asemeja más a tmux para Windows porque permite la división del terminal en varios paneles, independiente del shell. El Terminal de Windows admite múltiples pestañas y la división del terminal en múltiples paneles para incrementar tu productividad.

Para abrir/cerrar una nueva pestaña, simplemente haz clic en el botón + en la barra de pestañas o teclea Ctrl, Shift y T/W. Para moverte por las pestañas, pulsa Ctrl+Tab/Ctrl+Shift+Tab. Para dividir el terminal en varias pestañas, teclea simultáneamente Alt, Shift y “+” (verticalmente), Alt, Shift y “-” (horizontalmente). Para desplazarte entre estos paneles, pulsa Alt + teclas de flecha.  El Terminal de Windows admite múltiples pestañas y la división del terminal en múltiples paneles para una mejor productividad

iTerm

iTerm también es similar a Tmux con una configuración predeterminada adecuada para la mayoría de los usuarios. Puedes crear múltiples ventanas virtuales dentro de una sola ventana ‘física’ y puedes dividir, intercambiar y cambiar el tamaño de los paneles.

Cuando inicias iTerm2 por primera vez, se abre una ventana que muestra una sesión de terminal. Si deseas abrir más de una sesión a la vez…

cada uno de los cuales es una sesión de terminal diferente. iTerm2 

Tmux

Tmux es un multiplexor de terminal de código abierto. Te permite crear múltiples sesiones en el terminal y puedes abrir múltiples ventanas dentro de cada sesión. Cada ventana ocupa toda la pantalla, pero se puede dividir vertical y horizontalmente en paneles rectangulares. Las sesiones son persistentes, lo que significa que los programas que se ejecutan en Tmux seguirán ejecutándose incluso cuando te desconectas.

  1. Instalación: Windows. Necesitas instalar WSL y una distribución de Linux. macOS (brew install tmux). Arch (sudo pacman -S tmux –noconfirm). Ubuntu (sudo apt install tmux tmuxinator).
  2. Todos los comandos en Tmux comienzan con un prefijo que por defecto es: Ctrl + b . Puedes iniciar tu primera sesión de Tmux escribiendo: tmux, pero es mejor crear una nueva sesión con nombre (debes usar un nombre descriptivo): tmux new -s session_name. Puedes desconectarte de la sesión y volver al shell normal (Ctrl + b + d, detach), mostrar todas las sesiones (tmux ls) y reconectarte a la última sesión (tmux attach) o a una sesión con nombre (tmux a -t mysession). Finalmente, terminas la sesión escribiendo: tmux kill-session -t mysession o terminas todas las sesiones excepto la actual: tmux kill-session -a.
  3. Cuando inicias una nueva sesión, se crea una ventana con un solo panel en el interior. Puedes crear una nueva ventana (sería una especie de terminal virtual o escritorio) escribiendo: Ctrl + b + c (create). Existen, por supuesto, atajos de teclado para cambiar a la ventana anterior (Ctrl + b + p, previous), a la ventana siguiente (Ctrl + b + n, next) o directamente a una ventana en particular (Ctrl + b + número). Finalmente, cierras las ventana actual escribiendo: Ctrl + b + &.
  4. Además, tienes la opción de dividir la ventana en paneles horizontalmente (Ctrl + b + “) o verticalmente (Ctrl + b + %). A continuación, querrás moverte entre los paneles: Prefijo (Ctrl + b) + flechas del cursor (←, ↑, →, ↓) o cerrar el panel de trabajo/actual (Ctrl + b + x).
  5. Personalización de Tmux (una explicación más detallada la encontrarás en Making tmux Pretty and Usable by Ham Vocke). Editamos el archivo de configuración de Tmux: nvim ~/.tmux.conf
    # Reasignar el prefijo de 'Ctrl-b' a 'Ctrl-a'
    unbind C-b
    set-option -g prefix C-a
    bind-key C-a send-prefix
    
    # Compatibilidad con el ratón
    set-option -g mouse on
    set -g set-clipboard on
    
    # Dividimos los paneles usando "Ctrl-h" y "Ctrl-v"
    bind h split-window -h
    bind v split-window -v
    unbind '"'
    unbind %
    
    # Navegamos entre ventanas con Alt + teclas de flecha
    bind -n M-Left select-pane -L
    bind -n M-Right select-pane -R
    bind -n M-Up select-pane -U
    bind -n M-Down select-pane -D
    
    # Recargamos la configuración de tmux con Prefijo + r
    bind r source ~/.tmux.conf 
    # No queremos ningún tiempo de espera o demora
    set -g escape-time 10
    ############################################
    ### CAMBIOS De DISEÑO (/u/dothebarbwa)   ###
    ############################################
    
    # loud or quiet?
    set -g visual-activity off
    set -g visual-bell off
    set -g visual-silence off
    setw -g monitor-activity off
    set -g bell-action none
    
    #  modes
    setw -g clock-mode-colour colour5
    setw -g mode-style 'fg=colour1 bg=colour18 bold'
    
    # panes
    set -g pane-border-style 'fg=colour19 bg=colour0'
    set -g pane-active-border-style 'bg=colour0 fg=colour9'
    
    # statusbar
    set -g status-position bottom
    set -g status-justify left
    set -g status-style 'bg=colour18 fg=colour137 dim'
    set -g status-left ''
    set -g status-right '#[fg=colour233,bg=colour19] %d/%m #[fg=colour233,bg=colour8] %H:%M:%S '
    set -g status-right-length 50
    set -g status-left-length 20
    
    setw -g window-status-current-style 'fg=colour1 bg=colour19 bold'
    setw -g window-status-current-format ' #I#[fg=colour249]:#[fg=colour255]#W#[fg=colour249]#F '
    
    setw -g window-status-style 'fg=colour9 bg=colour18'
    setw -g window-status-format ' #I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F '
    
    setw -g window-status-bell-style 'fg=colour255 bg=colour1 bold'
    
    # messages
    set -g message-style 'fg=colour232 bg=colour16 bold'
    
  6. Vamos a utilizar tmuxinator para crear y administrar sesiones tmux más fácilmente.
  7. Creemos un nuevo proyecto: tmuxinator new mySession. Podemos editarlo más tarde con: tmuxinator edit mySession.
  8. El diseño o la distribución de las ventanas y paneles se puede personalizar. Si deseas obtener la configuración de diseño de tu ventana actual, simplemente escribe: tmux lsw -F “#{window_active} #{window_layout}” | awk ‘$1{print $2}’. En mi caso, el valor resultante acabó siendo: 4a38,192x55,0,0{101x55,0,0,2,90x55,102,0,8}.
    # /home/$USER/.config/tmuxinator/mySession.yml
    name: mySession # Nombre de la sesión y el proyecto
    root: ~/
    
    windows: # La opción windows te permite definir un número arbitrario de ventanas tmux. En nuestro ejemplo, especificamos tan solo tres ventanas: first_window, system_info y entertaining.
      - first_window:
          layout: main-horizontal # Puedes organizar los paneles en uno de los cinco diseños preestablecidos: even-horizontal, even-vertical, main-horizontal, main-vertical, o tiled.
          panes: # Los paneles son opcionales y son hijos de las ventanas. Definimos los paneles que se crean dentro de cada ventana. 
            - nvim myfile.txt # En cada panel, indicamos la orden a ejecutar.
            - cal
            - date
      - system_info:
          layout: tiled
          panes:
            - free -h
            - df -h
            - sensors
            - htop
      - entertaining:
          layout: 4a38,192x55,0,0{101x55,0,0,2,90x55,102,0,8} # Usamos la distribución o diseño de paneles que obtuvimos previamente.
          panes:
            - is_justtothepoint_alive: # Puedes ejecutar varios comandos en un panel.
              - ping -c 4 justtothepoint.com
              - newsboat
            - music:
              - radio
    
  9. Inicia una sesión: tmuxinator mySession
  10. Finalmente, podemos eliminar un proyecto (tmuxinator delete [project]), enumerar todos los proyectos (tmuxinator list), y matar la sesión (tmux kill-session -t mysession)
Bitcoin donation

JustToThePoint Copyright © 2011 - 2024 Anawim. ALL RIGHTS RESERVED. Bilingual e-books, articles, and videos to help your child and your entire family succeed, develop a healthy lifestyle, and have a lot of fun. Social Issues, Join us.

Esta web utiliza 'cookies' propias y de terceros para ofrecerte una mejor experiencia y servicio.
Al navegar o utilizar nuestros servicios, estas aceptando nuestra Política de Cookies, así como, nuestros Términos y condiciones de uso.