Haga un panel tmux de 80 (aproximadamente) columnas de ancho

Haga un panel tmux de 80 (aproximadamente) columnas de ancho

Estoy tratando de seguir la regla de las 80 columnas al escribir mi código, mi configuración actual de tmux está dividida 50/50 horizontalmente. Me gusta tener vim en el panel izquierdo y en el panel derecho tengo una división 75/25 donde ejecuto otras cosas.

En mi monitor lateral, el 50% tiene 76 columnas de ancho, pero en la pantalla de mi computadora portátil tiene 123 columnas de ancho.

Me gustaría maximizar el espacio para otros comandos. ¿Hay alguna manera de configurar esto en exactamente 80 columnas (más o menos) cuando inicio mi espacio de trabajo?

Actualmente estoy configurando mi espacio de trabajo con:

bind C-w source-file ~/dotfiles/scripts/tmux_work_layout

ese archivo contiene:

selectp -t 0              # Select pane 0
splitw -h -p 50           # Split pane 0 vertically by 50%
selectp -t 1              # Select pane 1
splitw -v -p 25           # Split pane 1 horizontally by 25%
selectp -t 0              # Select pane 0

Respuesta1

Encontré útil el código para la respuesta aceptada, pero estoy usando tmux 1.8 y esto parece ser una característica incorporada. Desde las páginas man de tmux en la ventana dividida: The -l and -p options specify the size of the new pane in lines (for vertical split) or in cells (for horizontal split), or as a percentage, respectively.Entonces, simplemente usar -l en lugar de -p debería tener el efecto Estás buscando. ex:

split-window -h -l 80

resize-paneSe describe una solución similar paraaquí.

Respuesta2

¿Es algo como esto lo que quieres?

Agregar al archivo y convertirlo en ejecutable mediante chmod +x filename. llamar por ej.

./sizetmux       # Default hardcoded size
./sizetmux 85    # Specify width

Para ejecutarlo desde el archivo fuente:

if-shell /path/to/script/sizetmux 80

Código:

#!/bin/bash

# Wanted pane width 0 - default 80, or pass argument 1 as wanted width
pw0=80
[[ "$1" =~ ^[0-9]+$ ]] && pw0="$1"

# This could be done nicer, but, anyhow: getting current width of pane 0
pw0_cur_w=$(tmux list-panes | awk -F"[ x:\\\[\\\]]+" '/^0:/{print $2}')

# Resize according to current width
if [[ "$pw0_cur_w" -eq "$pw0" ]]; then
    echo "OK $pw0"
elif [[ "$pw0_cur_w" -gt "$pw0" ]]; then
    ((w = pw0_cur_w - pw0))
    echo "$w less"
    tmux resize-pane -L -t 0 "$w"
elif [[ "$pw0_cur_w" -lt "$pw0" ]]; then
    ((w = pw0 - pw0_cur_w))
    echo "$w more"
    tmux resize-pane -R -t 0 "$w"
fi

También hay que tener en cuenta, por ejemplo, los números de línea en vim, entonces ¿quizás 85?


Edite quizás un poco mejor (no tanto desorden) (despuéspw0_cur_w=$(tm ...

((w = pw0_cur_w - pw0))

if [[ "$w" -ge 0 ]]; then
    dir="L"
    echo "$w less"
else
    dir="R"
    ((w *= -1))
    echo "$w more"
fi

[[ "$w" -gt "0" ]] && tmux resize-pane -"$dir" -t 0 "$w"

Respuesta3

Una manera fácil de hacer esto es usar el diseño vertical principal con Cb M-4 o Cb: selectl main-vertical. Está diseñado para emacs, por lo que el panel izquierdo tiene 81 columnas; deberá cambiar la opción de ancho del panel principal para que sea 80.

Respuesta4

Las cosas han cambiado desde que se publicó la pregunta y la última respuesta. tmux tiene ganchos que se pueden usar para mantener fijo el ancho del panel principal.

por ejemplo, uso el siguiente alias:

alias work-bftp="tmux attach -t work-bftp || tmux new -s work-bftp -d 'bash' \; set -g default-command bash \; split-window -h \; set-option -t work-bftp main-pane-width 80 \; selectl main-vertical \; set-hook -t work-bftp window-layout-changed 'selectl main-vertical;' \; attach;"

para crear una main-verticalventana basada en diseño, donde el panel principal se usa para el uso de vim de 80 columnas de ancho en la primera ventana. Esto utiliza window-layout-changedel evento para volver a dibujar la ventana con el tamaño deseado.

Lo intenté y funcionó durante un tiempo, client-resizedtambién con el evento, pero un día dejó de funcionar para las operaciones de maximización de la ventana del terminador/emulador.

Sin embargo, un problema con este enfoque es que el prefijo-z ya no funciona para la primera ventana.

información relacionada