¿Creando configuraciones tmux iniciables?

24

A menudo me encuentro haciendo lo mismo con tmux:

  1. cd a un directorio dado.
  2. tmux
  3. Cambiar el nombre de la ventana a lo que estoy haciendo.
  4. Dividir la ventana verticalmente 50%.
  5. Inicie un proceso en la ventana izquierda.
  6. Inicie otro proceso en la ventana derecha.
  7. Lucro.

¿Hay alguna forma de automatizar el inicio de todo esto para poder ejecutar un solo comando y obtener la ventana que estoy buscando?

Naftuli Kay
fuente
¿Qué pasa con un alias de shell?
Marco

Respuestas:

22

Archwiki salva el día! La inicialización de sesión en la página tmux da un ejemplo.

Dicho esto, en lugar de iniciar tmux como tmux, tmux new -s namenombrará la sesión cuando comience en lugar de asignarle un número.

Inicialización de sesión


Puede hacer que tmux abra una sesión con ventanas precargadas incluyendo esos detalles en su ~ / .tmux.conf:

new  -n WindowName Command
neww -n WindowName Command
neww -n WindowName Command

Para comenzar una sesión con ventanas divididas (paneles múltiples), incluya el comando splitw debajo de la nueva ventana que desea dividir; así:

new  -s SessionName -n WindowName Command
neww -n foo/bar foo
splitw -v -p 50 -t 0 bar
selectw -t 1 
selectp -t 0

abriría 2 ventanas, la segunda de las cuales se llamaría foo / bar y se dividiría verticalmente por la mitad (50%) con foo corriendo por encima de la barra. El foco estaría en la ventana 2 (foo / bar), panel superior (foo).

Nota: La numeración para sesiones, ventanas y paneles comienza en cero, a menos que haya especificado un índice base de 1 en su .conf

Para administrar varias sesiones, obtenga archivos de sesión separados de su archivo conf:

# initialize sessions
bind F source-file ~/.tmux/foo
bind B source-file ~/.tmux/bar
Robar
fuente
6

La respuesta de Rob es excelente y explica exactamente cómo manejar las sesiones desde tmux. Ahora, si no le importa usar una herramienta de terceros, tmuxinator es un gran proyecto que ayuda a crear y administrar sesiones fácilmente .

Cada sesión está controlada por un archivo de configuración que le permite definir todas sus ventanas y paneles junto con sus diseños y comandos predeterminados para ejecutarse dentro de ellos. También le permite definir un directorio de proyecto predeterminado, un socket específico y demonios que se deben ejecutar (por ejemplo, mysql). Para colmo, también proporciona un método fácil para adjuntarlos: simplemente ejecute mux [session-name]y comenzará la sesión o se adjuntará si ya se está ejecutando. Lo he estado usando por un tiempo y me encanta (¡gracias aziz !).

https://github.com/aziz/tmuxinator

JC Yamokoski
fuente