Bir tmux bölmesi 80 (ya da öylesine) sütununu geniş yap


12

Kodumu yazarken 80 sütun kuralını takip etmeye çalışıyorum, geçerli tmux kurulumum yatay olarak 50/50 ayrılmıştır. Sol bölmede vim olmasını seviyorum ve sağ bölmede başka şeyler yürüttüğüm bir 75/25 bölmem var.

Yan monitörümde% 50 76 sütun genişliğinde, ancak dizüstü bilgisayarımın ekranında 123 sütun genişliğinde.

Diğer komutlar için gayrimenkulü en üst düzeye çıkarmak istiyorum, Çalışma alanımı başlattığımda bunu tam olarak 80 sütuna ayarlamanın bir yolu var mı?

Şu anda çalışma alanımı aşağıdakilerle kuruyorum:

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

bu dosya şunları içerir:

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

Paragrafı, belirttiğiniz sütuna kadar, davanızda 80 dolduran bir düzenleyici kullanmayı düşünebilirsiniz. Emacs'ı kontrol edin .
Luis

1
vim 7.3+, colorcolumnNth karakterine alternatif bir arka plan sütunu ekleyen bir ayara sahiptir . PS> Asla karanlık tarafa
dönmeyeceğim

Yanıtlar:


5

İstediğiniz böyle bir şey mi?

Dosyaya ekleyin ve tarafından çalıştırılabilir yapın chmod +x filename. örn.

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

Kaynaklı dosyadan çalıştırmak için:

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

Kod:

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

Bir de dikkate almak gerekir örneğin vim satır numaraları yani belki 85?


Belki biraz daha güzel (çok fazla dağınık değil) Düzenle (sonra 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"


Bu mükemmel çalışıyor gibi görünüyor, çalışma alanımı yüklediğimde otomatik olarak çalıştırmanın bir yolu var mı? (ayrıca sorumu biraz daha fazla bilgi ile güncelledim)
JKirchartz

@JKirchartz: Kaynak komutuyla güncellendi. (İnsanları iyi araçlar btw kullanarak görmek güzel.)) Kullanıyorlar screenve sadece son zamanlarda kendimi zorlamaya çalıştım tmux.
Runium

Evet, vim bölünmelerini anlamaya çalışıyordum ve iş akışından çok memnun değildim, screenbulmadan bir gün önce kontrol ettim tmux, bayıldım. Vim benzeri olacak şekilde ayarlayın ve şimdi bir esinti.
JKirchartz

sadece bir hata fark ettiniz, $ bölmesini herhangi bir yerde tanımlamıyorsunuz, bunun yerine 0 ile çalıştı, mükemmel çalıştı, teşekkürler!
JKirchartz

@JKirchartz: Ah, teşekkürler. $paneİsteğe bağlı argüman 2 olduğu ve bölmenin nerede olduğunu belirlemeye çalıştığım bazı kodlardan kopyaladım (sol / orta / sağ) ve buna göre "R" veya "L" kullanın, ancak tespit edilmesi zor oldu. Düzeltildi.
Runium

8

Kabul edilen yanıtın kodunu yararlı buldum, ancak tmux 1.8 kullanıyorum ve bu yerleşik bir özellik gibi görünüyor. Bölünmüş pencerenin altındaki tmux man sayfalarından: 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.Yani, sadece -l arıyorsunuz. örn:

split-window -h -l 80

Benzer bir çözüm buradaresize-pane açıklanmaktadır .


0

Bunu yapmanın kolay bir yolu, ana dikey düzeni Cb M-4 veya Cb: selectl ana dikey ile kullanmaktır. Emacs için tasarlanmıştır, böylece sol bölme 81 sütundur, 80 yapmak için ana bölme genişliği seçeneğini değiştirmeniz gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.