Tornar um painel tmux de 80 (ou mais) colunas de largura

11

Estou tentando seguir a regra de 80 colunas ao escrever meu código, minha configuração atual do tmux é dividida 50/50 horizontalmente. Eu gosto de ter vim no painel esquerdo, e no painel direito eu tenho um split 75/25 onde eu corro outras coisas.

No meu monitor lateral, 50% tem 76 colunas de largura, mas na tela do meu laptop tem 123 colunas de largura.

Gostaria de maximizar o espaço real para outros comandos. Existe uma maneira de definir isso exatamente para 80 colunas (ou mais) quando eu inicio meu espaço de trabalho?

Atualmente, estou configurando meu espaço de trabalho com:

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

esse arquivo contém:

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
    
por JKirchartz 03.05.2013 / 15:34

3 respostas

5

É algo assim que você quer?

Adicione ao arquivo e torne-o executável por chmod +x filename . chamada, por exemplo,

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

Para executá-lo a partir do arquivo de origem:

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

Também é necessário levar em consideração, por exemplo, números de linha no vim, talvez 85?

Edite talvez um pouco melhor (não muito bagunça) (após pw0_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"
por 03.05.2013 / 17:12
7

Eu achei o código da resposta aceita útil, mas estou usando o tmux 1.8 e este parece ser um recurso embutido. A partir das páginas man do tmux em split-window: 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. Então, simplesmente usando -l insead of -p deve ter o efeito que você está procurando. ex:

split-window -h -l 80

Uma solução semelhante para resize-pane é descrita aqui .

    
por 14.03.2014 / 23:16
0

Uma maneira fácil de fazer isso é usar o layout vertical principal com C-b M-4 ou C-b: selecione main-vertical. Ele é projetado para o emacs, então o painel esquerdo tem 81 colunas, você precisará alterar a opção main-pane-width para torná-lo 80.

    
por 05.05.2013 / 09:31

Tags