Сделайте tmux область 80 (или так) столбцами широкий

Ваша система могла бы быть в порядке, но это могло быть состояние состязания, происходящее с make при выполнении сборок параллельно.

Если бы что-то неправильно с Вашей системой, она зависла бы/разрушила бы для других сценариев, не как раз в то самое время, когда выполнение параллели создает.

12
04.05.2013, 02:06
3 ответа

Это - что-то вроде этого, что Вы хотите?

Добавьте, чтобы зарегистрировать и сделать исполняемый файл 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

Также нужно принять во внимание, например, номера строки в энергии поэтому, возможно, 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"

5
27.01.2020, 19:56
  • 1
    это, кажется, работает отлично, там способ выполнить его автоматически, когда я загружаю свою рабочую область? (также я обновил свой вопрос с немного большим количеством информации) –  JKirchartz 03.05.2013, 18:53
  • 2
    @JKirchartz: Обновленный с исходной командой. (Хороший, чтобы видеть, что люди используют достойные инструменты btw.;)) Использовали screen и только недавно начали пытаться вынудить меня к tmux. –  Runium 03.05.2013, 20:09
  • 3
    Да, я пытался выяснить разделения энергии, и я не был очень доволен рабочим процессом, проверенным screen в течение дня перед открытием tmux, Я люблю его. Настройте его для энергии, и теперь это - бриз. –  JKirchartz 03.05.2013, 20:12
  • 4
    просто заметил ошибку, Вы не определяете $pane нигде, заменение этого с 0 работало отлично, Спасибо! –  JKirchartz 03.05.2013, 21:32
  • 5
    @JKirchartz: А-ч, спасибо. Я скопировал его с некоторого кода где $pane был дополнительный аргумент 2 и где я пытался определить, где область (оставлялась/центрировалась/исправлялась) и использование "R" или "L" соответственно, но оказалась твердой обнаружить. Исправленный. –  Runium 03.05.2013, 21:38

Простой способ сделать это должно использовать основной вертикальный макет с C-b M-4 или C-b: основной вертикальный selectl. Это разработано для emacs, таким образом, левая панель составляет 81 столбец, необходимо будет изменить опцию main-pane-width сделать его 80.

0
27.01.2020, 19:56

Код принятого ответа я нашел полезным, но я использую tmux 1.8, и, похоже, это встроенная функция. На страницах руководства tmux в разделе split-window: Параметры -l и -p определяют размер новой панели в строках (для вертикального разделения) или в ячейках (для горизонтального разделения) или в процентах, соответственно. Таким образом, простое использование -l вместо -p должно дать желаемый эффект. Пример:

split-window -h -l 80

Аналогичное решение для resize-pane описано здесь .

8
27.01.2020, 19:56

Теги

Похожие вопросы