Складіть панель tmux з 80 (або близько того) стовпців у ширину


12

Я намагаюся дотримуватися правила 80 стовпчика під час написання свого коду, моє поточне налаштування tmux розділено на 50/50 по горизонталі. Мені подобається мати vim на лівій панелі, а на правій панелі - розділити 75/25, де я запускаю інші речі.

На моєму боковому моніторі 50% - це 76 колонок, але на дисплеї мого ноутбука - 123 колонки.

Я хотів би максимально використовувати нерухомість для інших команд. Чи є спосіб встановити це рівно на 80 стовпців (або близько того) під час запуску робочої області?

Наразі я налаштовую свою робочу область за допомогою:

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

цей файл містить:

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

Ви можете скористатися редактором, який заповнює абзац до вказаного стовпця, 80 у вашому випадку. Перевірте emacs .
Луїс

1
vim 7.3+ має colorcolumnналаштування, яке додає стовпчик альтернативного фону на N-му символі. PS> Я ніколи не звернуся до темної сторони;)
JKirchartz

Відповіді:


5

Ви хочете щось подібне?

Додати у файл та зробити виконуваним користувачем chmod +x filename. дзвінок, наприклад

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

Щоб запустити його зі знайденого файлу:

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

Код:

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

Також слід враховувати, наприклад, номери рядків у vim, можливо, 85?


Редагувати, можливо, трохи приємніше (не так багато захаращення) (після 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"


це, здається, працює ідеально, чи є спосіб запустити його автоматично, коли я завантажую свою робочу область? (я також оновив своє запитання трохи більше інформації)
JKirchartz

@JKirchartz: оновлено командою джерела. (Приємно бачити людей , що використовують пристойні інструменти до речі ,.)) Використовували screenі тільки недавно почали намагатися змусити себе до tmux.
Руніум

Так, я намагався з'ясувати vim спліт, і я не був дуже задоволений робочим процесом, перевірив screenза день до пошуку tmux, мені це подобається. Налаштуйте його так, як він нагадує вим, і тепер це вітер.
JKirchartz

щойно помітив помилку, ви ніде не визначаєте $ pane, замінюючи це на 0, працював ідеально, дякую!
JKirchartz

@JKirchartz: А, дякую. Я скопіював його з якогось коду, де $paneбув необов'язковий аргумент 2 і де я спробував визначити, де знаходиться панель (зліва / центр / право) і відповідно використовувати "R" або "L", але виявилося, що важко виявити. Виправлено.
Руніум

8

Я вважав код для прийнятої відповіді корисним, але я використовую tmux 1.8, і це, здається, є вбудованою функцією. Зі сторінок tmux man у розділеному вікні: 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.Отже, просто використання -l insead з -p повинно мати ефект ви шукаєте. колишній:

split-window -h -l 80

Подібне рішення для resize-paneописано тут .


0

Простий спосіб зробити це - використовувати макет основної вертикалі з Cb M-4 або Cb: selectl main-вертикальний. Він розроблений для emacs, тому ліва панель становить 81 стовпчик, вам потрібно буде змінити параметр ширини основної панелі, щоб зробити його 80.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.