Allarga un riquadro di tmux 80 (circa) colonne


12

Sto cercando di seguire la regola delle 80 colonne quando scrivo il mio codice, la mia attuale configurazione di tmux è divisa 50/50 in orizzontale. Mi piace avere VIM nel riquadro di sinistra e nel riquadro di destra ho una divisione 75/25 in cui eseguo altre cose.

Sul mio monitor laterale il 50% è largo 76 colonne, ma sul display del mio laptop è largo 123 colonne.

Vorrei massimizzare il settore immobiliare per altri comandi, c'è un modo per impostarlo esattamente su 80 colonne (o giù di lì) quando avvio il mio spazio di lavoro?

Attualmente sto configurando il mio spazio di lavoro con:

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

quel file 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

Puoi considerare di utilizzare un editor che riempia il paragrafo fino alla colonna specificata, 80 nel tuo caso. Controlla emacs .
Luis

1
vim 7.3+ ha colorcolumnun'impostazione che aggiunge una colonna di uno sfondo alternativo all'ennesimo carattere. PS> Non mi rivolgerò mai al lato oscuro;)
JKirchartz,

Risposte:


5

È qualcosa del genere che vuoi?

Aggiungi al file e rendilo eseguibile da chmod +x filename. chiama ad es

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

Per eseguirlo dal file di origine:

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

Codice:

#!/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

Bisogna anche tenere conto, ad esempio, dei numeri di riga in vim, quindi forse 85?


Modifica forse un po 'più bello (non tanto disordine) (dopo 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"


questo sembra funzionare perfettamente, c'è un modo per eseguirlo automaticamente quando carico il mio spazio di lavoro? (ho anche aggiornato la mia domanda con qualche informazione in più)
JKirchartz,

@JKirchartz: aggiornato con il comando sorgente. (Bello vedere persone che usano strumenti decenti tra l'altro;;)) Hanno usato screene solo recentemente hanno iniziato a provare a costringermi a farlo tmux.
Runium,

Sì, stavo cercando di capire le divisioni di Vim, e non ero molto contento del flusso di lavoro, verificato screenper un giorno prima di trovare tmux, lo adoro. Impostalo per essere simile a Vim e ora è un gioco da ragazzi.
JKirchartz,

ho appena notato un bug, non stai definendo $ riquadro da nessuna parte, sostituendolo con 0 ha funzionato perfettamente, grazie!
JKirchartz,

@JKirchartz: Ah, grazie. L'ho copiato da un codice in cui $paneera opzionale l'argomento 2 e dove ho cercato di determinare dove si trovava il riquadro (sinistra / centro / destra) e utilizzare di conseguenza "R" o "L", ma si è rivelato difficile da rilevare. Corretto.
Runium,

8

Ho trovato utile il codice per la risposta accettata, ma sto usando tmux 1.8 e questa sembra essere una funzionalità integrata. Dalle pagine man di tmux in 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.Quindi, usare semplicemente -l insead di -p dovrebbe avere l'effetto stai cercando. ex:

split-window -h -l 80

Una soluzione simile per resize-paneè descritta qui .


0

Un modo semplice per farlo è usare il layout verticale principale con Cb M-4 o Cb: seleziona verticale principale. È progettato per emacs, quindi il riquadro di sinistra è di 81 colonne, dovrai cambiare l'opzione di larghezza del riquadro principale per renderlo 80.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.